API响应数据触发的token管理方法及计算机存储介质与流程

文档序号:32215937发布日期:2022-11-16 07:33阅读:49来源:国知局
API响应数据触发的token管理方法及计算机存储介质与流程
api响应数据触发的token管理方法及计算机存储介质
技术领域
1.本发明涉及互联网通信技术领域,特别涉及一种api响应数据触发的token管理方法及计算机存储介质。


背景技术:

2.近年来,随着前后端分离思想的兴起,restful api的使用越来越广泛。终端应用(app、小程序、网页)执行业务需要调用服务端开放的restful api完成,某些需要验证用户身份信息的api都需要携带用户登录身份信息。
3.目前保持token信息一直有效的方案一般有3种。第1种为前置式:定期比较本地时间和token过期时间,如果token快失效了,就去刷新token信息。第2种为后置式:由api响应数据触发刷新token行为,然后再自动请求原api。第3种为永远有效的token或者开放静默登录的api。但是,第1种方式因为本地终端时间和服务器时间不同步,会导致概率性的token失效问题,从而导致api请求概率性失败,无法得到良好的用户体验。第2种方式在并发访问api时(常见的场景)可能会存在多次刷新token的行为,存在浪费;且没有管理登录流程。第3种方式存在较大的安全隐患,极容易遭受服务器攻击。
4.因此,亟需一种api响应数据触发的token管理方法及计算机存储介质来解决上述问题。


技术实现要素:

5.本发明解决的技术问题在于,提供了一种api响应数据触发的token管理方法及计算机存储介质,解决了因本地判断token过期,存在判断误差以及因多次刷新token的行为,存在浪费的问题。
6.本发明解决其技术问题是采用以下的技术方案来实现的:
7.一种api响应数据触发的token管理方法,包括以下步骤:创建全局token广播;在访问api时,发送accesstoken信息进行身份验证;若所述api返回的响应数据为凭据无效,则刷新token;若token刷新成功,则重新访问所述api,并通过所述token广播发送所述token信息给其它监听者;若token刷新失败,则显示登录界面;获取用户登录信息;在当前登录用户信息与上次登录用户信息不一致时,通过所述token广播返回失败信息;在当前登录用户信息与上次登录用户信息一致时,重新访问所述api。
8.一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时,实现如上所述的api响应数据触发的token管理方法。
9.本发明采用上述技术方案达到的技术效果是:由api的响应数据状态触发token登录和刷新行为,无需本地判断token过期,不存在判断误差;api请求和token行为是多对一的关系,只需刷新一次token,不浪费用户流量和服务器资源。
10.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够
更明显易懂,以下特举较佳实施例,并配合附图,详细说明。
附图说明
11.图1为本发明实施例示出的api响应数据触发的token管理方法的流程图;
12.图2为本发明实施例示出的重新登录token生成方法的流程图;
13.图3为本发明实施例示出的用户登录情况判断方法的流程图;
14.图4为本发明实施例示出的计算机存储介质的结构框图。
具体实施方式
15.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,而且所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
16.现有的三种方式主要有以下问题:第1种方式因为本地终端时间和服务器时间不同步,会导致概率性的token失效问题,从而导致api请求概率性失败,无法得到良好的用户体验。第2种方式在并发访问api时(常见的场景)可能会存在多次刷新token的行为,存在浪费;且没有管理登录流程。第3种方式存在较大的安全隐患,极容易遭受服务器攻击。
17.综上所述,从用户体验角度出发,在需要登录的时候才显示登录页面、在登录成功后一段时间内(refreshtoken有效期内)都不需要再次登录是终端应用需要具备的体验。
18.从开发者角度出发,登录和刷新token这两种和token相关的行为应该统一管理,在必要的时候显示登录页面,登录成功后自动执行原api,在必要的时候刷新token成功后自动执行原api,业务开发者不必关心实现细节,从而提高开发效率,是面向开发者应该封装的功能。
19.图1为本发明实施例示出的api响应数据触发的token管理方法的流程图,图2为本发明实施例示出的重新登录token生成方法的流程图,图3为本发明实施例示出的用户登录情况判断方法的流程图。
20.请参阅图1至图3。如图1所示,本发明的一种api响应数据触发的token管理方法,包括以下步骤:
21.步骤s11:创建全局token广播。
22.具体地,token广播用于在刷新token后,将刷新的token通知给其它监听者。其它监听者包括但不限于其它api,还可以是其它需要使用token的第三方。当token失效时,登录和/或刷新token行为只需要执行一次,然后通过token广播通知所有监听者结果即可。
23.本发明所述方法由于引入了可以被同时多次监听的token广播,当token失效时,登录和刷新token行为只会执行一次,然后通过token广播通知所有监听者结果继续后续流程,不浪费用户流量和服务器资源,能保证用户得到最好的体验。
24.步骤s12:在访问api时,发送accesstoken信息进行身份验证。
25.当客户端需要访问服务器数据或资源,客户端需要获得一个服务器端生成的令牌。在访问服务器的接口时,发送带上token的网络请求便可以获得服务器的数据或资源,例如获取用户的服务器数据或修改用户的服务器数据,包括用户名称、头像等。而所述token存在一定的有效期,token过期,便无法正常访问服务器接口。
26.具体地,访问api时,在http header中(或者其他形式)填入从本地存储获取的accesstoken信息,通过accesstoken信息将进行身份验证。accesstoken信息存在有效期限,accesstoken信息失效时无法访问api。accesstoken信息在用户登录后生成,若用户未登录,则本地数据库中没有进行存储,在访问时无法获取到accesstoken信息。
27.在一实施方式中,步骤s12:在访问api时,发送accesstoken信息进行身份验证,包括:在接收到api访问请求时,获取accesstoken信息;在accesstoken过期时,返回凭据无效的响应数据。
28.具体地,获取到accesstoken信息,判断accesstoken信息是否过期。在accesstoken信息过期无法访问api时,api接口返回凭据无效的响应数据。在accesstoken信息未过期可以访问api时,通过accesstoken信息访问api,已结束业务。
29.在一实施方式中,访问api调用业务接口流程包括:前端读取host端口提供的loginlnfo(用户登录信息),host端可以通过getloginlnfo接口向前端提供loginlnfo。前端判断host端是否提供合法loginlnfo。若loginlnfo合法,则进入云端业务接口。若不合法,则读取本地保存的loginlnfo并调用原接口,进入云端业务接口。
30.如图3所示,在一实施方式中,步骤s12:在访问api时,发送accesstoken信息进行身份验证包括以下子步骤:
31.步骤s31:访问api。
32.步骤s32:判断当前是否处于用户登录状态。
33.步骤s33:若处于,则获取accesstoken信息。
34.步骤s34:若不处于,则显示登录页面。
35.具体地,在用户未登录时,无法获取去到accesstoken信息。因此,无法访问api,需要完成用户登录后,再访问原api。以qingpay为例,进入钱包首页后,并发访问若干个api完成业务,从api返回的响应信息分析。若当前未登录,则显示登录页面,用户完成登录后,上述api携带登录后的token信息自动重新执行。若当前已登录,则获取token,并判断token是否过期。
36.步骤s13:若所述api返回的响应数据为凭据无效,则刷新token。
37.具体地,如果api返回响应数据是“凭据无效/凭据过期”的状态,调用刷新token api,并监听token广播。如果获取到token更新成功的信息,则使用更新后的token重新访问原api。如果没有从t欧肯广播获取到token信息以及token更新失败,原api返回失败响应数据,api结束访问。
38.在一实施方式中,步骤s13:若所述api返回的响应数据为凭据无效,则刷新token,包括:从数据库中获取refreshtoken信息,并根据所述refreshtoken信息刷新token。
39.具体地,调用刷新token api(http header或其他形式填入本地存储获取的refreshtoken信息。主动刷新token的凭证是refresh token,也是加密字符串,并且和token是相关联的。
40.在一实施方式中,步骤s13:若所述api返回的响应数据为凭据无效,则刷新token,还包括:通过host端刷新token;若刷新成功,则重新访问api;若刷新失败,则调用云端刷新token;在云端刷新token成功时,重新访问api。
41.前端调用host端刷新接口,host端refresh token接口,前端判断host端是否提供合法loginlnfo。若合法,则进入云端业务接口。若不合法,则调用云端刷新接口。云端刷新token接口,前端判断刷新token是否成功。若刷新后合法,则进入云端业务接口。
42.步骤s14:若token刷新成功,则重新访问所述api,并通过token广播发送所述token信息给其它监听者。
43.具体地,访问一个api时,用户登录但token过期,刷新了token后,通过token广播告知其它api等。使得用户在访问其它api时,使用刷新后的token直接访问,无需再次进行刷新。
44.步骤s15:若token刷新失败,则显示登录界面。
45.具体地,token刷新失败包括用户没有进行登录的情况,因此显示登录界面,以供用户进行登录。
46.在一实施方式中,步骤s15:若token刷新失败,则显示登录界面,包括:在token刷新失败时,所述api返回响应失败信息,结束api访问,并显示所述登录界面。
47.在一实施方式中,步骤s15:若token刷新失败,则显示登录界面,之后还包括:在用户退出登录界面时,通过token广播返回访问失败信息。
48.具体地,用户退出登陆界面后,无法获取到有效的token信息。在访问api时,无法通过使用有效的token信息成功进行方法。而且,用户可能同时访问了多个api(一个业务使用多个api),在无法得到有效token信息时,需要通过token广播告知其它api,已结束业务。
49.在一实施方式中,步骤s15:若token刷新失败,则显示登录界面之后以下子步骤:
50.步骤s21:调用host端的登录接口。
51.步骤s22:在用户登录成功后,登录接口返回新的token。
52.在一实施方式中,前端调用host端的登录接口,host端launchloginpage,前端在判断host端是否提供合法的loginlnfo。若loginlnfo不合法,则调用本地登录界面,云端提供登录接口。
53.步骤s16:获取用户登录信息。
54.具体地,获取用户在登陆界面输入的用户信息,判断上述登录信息是否能够成功进行登录。
55.步骤s17:在当前登录用户信息与上次登录用户信息不一致时,通过所述token广播返回失败信息。
56.具体地,显示登录页面,在本次登录用户和上次登录用户不一致时,token广播返回失败数据,并结束业务流程。
57.步骤s18:在当前登录用户信息与上次登录用户信息一致时,重新访问所述api。
58.在一实施方式中,步骤s18:在当前登录用户信息与上次登录用户信息一致时,重新访问所述api,之后包括:存储用户重新登录后获取的新的token信息,并通过所述token广播将新的token信息发送给所述其它监听者。
59.本方法可从两方面举证:一、抓取终端应用的日志。应用本方法后,在登录成功及
token失效的情况下形成的http日志有两种序列:api1-》刷新token-》api1;api1,api2...apin-》刷新token-》api1,api2...apin。二、观察应用的登录流程。应用本方法后,在未登录的情况下访问某些需要身份认证的api时会弹出登录页面,登录成功后,原api自动执行。相应日志序列如下:api1-》登录-》api1;api1,api2...apin-》登录-》api1,api2...apin。
60.本实施方式的方法api的响应数据状态触发token登录和刷新行为,无需本地判断token过期,不存在判断误差;api请求和token行为是多对一的关系,不浪费用户流量和服务器资源;用户无感的token管理行为,最大程度保证api访问成功,提高用户体验度;业务开发者无感的token管理行为,对业务开发者体验友好,提高开发效率。
61.请参阅图4,图4为本发明实施例示出的计算机存储介质的结构框图。
62.如图4所示,计算机存储介质,包括:存储器10、处理器20以及存储在存储器里并可在处理器上运行的车辆信息排行程序,api响应数据触发的token管理程序被处理器执行时实现如上述实施例中任一项api响应数据触发的token管理方法的步骤。
63.具体地,api响应数据触发的token管理程序执行的方法步骤请参阅上述实施方式,故此不再过多叙述。
64.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络设备等)执行本发明实施例各个实施场景所述的方法。
65.应该理解的是,虽然图1、图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图1、图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
66.以上结合附图详细描述了本发明的优选实施方式,但是本发明并不限于上述实施方式中的具体细节,上述实施例及附图是示例性的,附图中的模块或流程并不一定是实施本发明实施例所必须的,不能理解为对本发明的限制,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型和组合,这些简单变型和组合均属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1