System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机应用,特别涉及一种多并发请求场景下刷新令牌的方法。
技术介绍
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所
8.一种多并发请求场景下刷新令牌的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至4任意一项所述的方法步骤。
9.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任意一项所述的方法步骤。
...【技术特征摘要】
1.一种多并发请求场景下刷新令牌的方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,取出队列中第一个任务,判断之前任务请求时的令牌token与当前最新的全局令牌token是否相同:
3.根据权利要求2所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,如果请求获取新令牌token失败,则该请求任务直接返回获取新令牌token失败的响应数据response;
4.根据权利要求3所述的多并发请求场景下刷新令牌的方法,其特征在于:所述步骤s4中,记录重新请求全局令牌token的任务,当任务再次请求成功时,删除对应的重新请求记录;
5.一种多并发请求场景下刷新令牌的系统,其特征在于:包括任务拦截模块,同步队列管理模块和...
【专利技术属性】
技术研发人员:马仕信,孙彪,单文政,张运江,张波,
申请(专利权)人:浪潮软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。