System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种多并发请求场景下刷新令牌的方法技术_技高网

一种多并发请求场景下刷新令牌的方法技术

技术编号:43606504 阅读:4 留言:0更新日期:2024-12-11 14:52
本发明专利技术特别涉及一种多并发请求场景下刷新令牌的方法。该多并发请求场景下刷新令牌的方法,统一拦截网络请求任务的服务端返回结果Response,判断令牌Token是否失效;若失效则刷新令牌Token;在同步队列Queue中,依次执行刷新任务,直至队列中的任务都执行完,成队列清空。该多并发请求场景下刷新令牌的方法,能够在不影响每个业务独立请求的情况下,无感自动刷新令牌Token并重新请求,解决了多并发请求场景下刷新令牌Token的问题;同时代码无侵入性,不影响单个网络请求相关代码,不会增加单个网络请求的成本。

【技术实现步骤摘要】

本专利技术涉及计算机应用,特别涉及一种多并发请求场景下刷新令牌的方法


技术介绍

1、token在计算机身份认证中是令牌的意思,表示执行某些操作的权利的对象。使用令牌token进行用户身份鉴权认证,能防止未经授权的用户访问受限资源,提高安全性,减少网络传输和服务器的负载,提高性能,减少服务器负担。

2、flutter是谷歌推出的一个开源的ui(用户界面)软件开发工具包,用于开发跨平台的应用程序。它允许开发者使用一套代码库来构建在android、ios、web和桌面平台上运行的高性能、美观的应用程序。

3、flutter网络客户端在向服务端请求数据过程中,会在请求中带上令牌token用于服务端鉴权。为了保证安全,令牌token要有时效性,为了避免令牌token被恶意攻击或过期,客户端需要在发送请求后被服务端告知令牌token过期时,向服务端发送刷新令牌token的请求,以获得新的令牌token,然后再重新请求之前失败的请求。

4、随着flutter应用客户端功能越来越复杂,在flutter客户端使用过程中,会存在同时发出多个异步请求的情况。在令牌token失效的情况下会触发多次刷新token的请求,导致同时异步刷新令牌token多次,但是最终只会有一个令牌token有效,多个请求会拿着错误的令牌token再次重复请求,又会导致令牌token失效报错,引发连环问题。

5、基于上述情况,本专利技术提出了一种多并发请求场景下刷新令牌的方法。


技术实现思路

1、本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的多并发请求场景下刷新令牌的方法。

2、本专利技术是通过如下技术方案实现的:

3、一种多并发请求场景下刷新令牌的方法,其特征在于:包括以下步骤:

4、步骤s1、统一拦截网络请求任务的服务端返回结果response,判断当前请求任务返回令牌token是否失效;若返回令牌token失效,则刷新令牌token;可能会同时存在多个异步请求任务需要刷新令牌token;

5、步骤s2、将拦截到的所有需要刷新令牌token的异步请求任务放进一个flutter同步队列queue中,依次执行刷新任务,同时将新任务不断添加进同步队列queue中;

6、步骤s3、在同步队列queue中,依次执行刷新任务;

7、步骤s4、取出队列中第一个任务,判断全局令牌token是否为有效状态:

8、若全局令牌token为有效状态,则重新请求最新的全局令牌token;

9、若全局令牌token为失效状态,则触发请求获取新的全局令牌token;

10、步骤s5、重复步骤s4,直至队列中的任务都执行完,成队列清空。

11、所述步骤s4中,取出队列中第一个任务,判断之前任务请求时的令牌token与当前最新的全局令牌token是否相同:

12、若不同,则说明全局令牌token已经被刷新成有效状态,直接用最新的全局令牌token重新请求,并记录为重新请求的任务,然后从同步队列queue中删除对应的任务;

13、若相同,则说明当前全局令牌token还是失效状态,触发请求获取新令牌token。

14、所述步骤s4中,如果请求获取新令牌token失败,则该请求任务直接返回获取新令牌token失败的响应数据response;

15、如果请求获取新令牌token成功,则更新全局令牌token,再用新的全局令牌token重新请求,并记录为重新请求的任务,然后从同步队列queue中删除对应的任务。

16、所述步骤s4中,记录重新请求全局令牌token的任务,当任务再次请求成功时,删除对应的重新请求记录;

17、当任务再次请求失败时,如果判定该任务是之前重新请求的任务,则不再执行刷新令牌token操作,直接返回获取新令牌token失败的响应数据response。

18、一种多并发请求场景下刷新令牌的系统,其特征在于:包括任务拦截模块,同步队列管理模块和令牌刷新模块;

19、所述任务拦截模块负责统一拦截网络请求任务的服务端返回结果response,判断当前请求任务返回令牌token是否失效;若返回令牌token失效,则刷新令牌token;

20、所述同步队列管理模块负责将拦截到的所有需要刷新令牌token的异步请求任务放进一个flutter同步队列queue中,依次执行刷新任务,同时将新任务不断添加进同步队列queue中;

21、所述令牌刷新模块负责在同步队列queue中依次执行刷新任务;

22、取出队列中第一个任务,判断全局令牌token是否为有效状态:

23、若全局令牌token为有效状态,则所述令牌刷新模块重新请求最新的全局令牌token;

24、若全局令牌token为失效状态,则所述令牌刷新模块触发请求获取新的全局令牌token;

25、再继续取出队列中的第一个任务,重复执行上述逻辑,直至队列中的任务都执行完,成队列清空。

26、所述令牌刷新模块取出队列中第一个任务后,先判断之前任务请求时的令牌token与当前最新的全局令牌token是否相同:

27、若不同,则说明全局令牌token已经被刷新成有效状态,直接用最新的全局令牌token重新请求,并记录为重新请求的任务,然后从同步队列queue中删除对应的任务;

28、若相同,则说明当前全局令牌token还是失效状态,触发请求获取新令牌token;

29、如果请求获取新令牌token失败,则该请求任务直接返回获取新令牌token失败的响应数据response;

30、如果请求获取新令牌token成功,则更新全局令牌token,再用新的全局令牌token重新请求,并记录为重新请求的任务,然后从同步队列queue中删除对应的任务。

31、所述令牌刷新模块记录重新请求全局令牌token的任务,并在任务再次请求成功时,删除对应的重新请求记录;

32、当任务再次请求失败时,所述令牌刷新模块判定该任务收否为之前重新请求的任务,若是则不再执行刷新令牌token操作,直接返回获取新令牌token失败的响应数据response。

33、一种多并发请求场景下刷新令牌的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述的方法步骤。

34、一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。

35、本专利技术的有益效果是:该多并发请求场景下刷新令牌的方法,能够在不影响每个业务独立请求的情况下,无感自动刷新令牌token并重新请求,解决了多并发请求场景下刷新令牌token的问题;同时代码无侵入性,不本文档来自技高网...

【技术保护点】

1.一种多并发请求场景下刷新令牌的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤S4中,取出队列中第一个任务,判断之前任务请求时的令牌Token与当前最新的全局令牌Token是否相同:

3.根据权利要求2所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤S4中,如果请求获取新令牌Token失败,则该请求任务直接返回获取新令牌Token失败的响应数据Response;

4.根据权利要求3所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤S4中,记录重新请求全局令牌Token的任务,当任务再次请求成功时,删除对应的重新请求记录;

5.一种多并发请求场景下刷新令牌的系统,其特征在于:包括任务拦截模块,同步队列管理模块和令牌刷新模块;

6.根据权利要求5所述的多并发请求场景下刷新令牌的系统,其特征在于:所述令牌刷新模块取出队列中第一个任务后,先判断之前任务请求时的令牌Token与当前最新的全局令牌Token是否相同:

7.根据权利要求6所述的多并发请求场景下刷新令牌的系统,其特征在于:所述令牌刷新模块记录重新请求全局令牌Token的任务,并在任务再次请求成功时,删除对应的重新请求记录;

8.一种多并发请求场景下刷新令牌的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至4任意一项所述的方法步骤。

9.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任意一项所述的方法步骤。

...

【技术特征摘要】

1.一种多并发请求场景下刷新令牌的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,取出队列中第一个任务,判断之前任务请求时的令牌token与当前最新的全局令牌token是否相同:

3.根据权利要求2所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,如果请求获取新令牌token失败,则该请求任务直接返回获取新令牌token失败的响应数据response;

4.根据权利要求3所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,记录重新请求全局令牌token的任务,当任务再次请求成功时,删除对应的重新请求记录;

5.一种多并发请求场景下刷新令牌的系统,其特征在于:包括任务拦截模块,同步队列管理模块和...

【专利技术属性】
技术研发人员:马仕信孙彪单文政张运江张波
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1