token无感刷新的情况下, 如果短时间连续请求多次401,同时触发无感刷新, 第一次生效后,会导致后续刷新token的请求refresh_token失效
一、该问题的重现步骤是什么?
1. 开启单人登录模式和有状态token
2. 登录成功后, 在redis工具中删除token, 不要删除refresh_token
3.前端刷新页面(连续发送多次(6次以上)后端接口请求,例如dict)
二、你期待的结果是什么?实际看到的又是什么?
期待正常刷新token正常访问页面
实际某个刷新token的请求报了"令牌刷新错误或无效"导致请求到登录页面
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
商业版4.1.0 Windows
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
你看下第二个refreshToken接口调用具体报错的日志是什么,我本地没有重现,按理说refreshToken有效期都是可以直接刷新的。还得看下你的具体报错,才能来判断。
错误的返回如下:
我排查的原因为: 第一次刷新token成功时, 会修改redis中的refresh_token, 导致第二次请求刷新token时, 请求到后端的refresh_token与redis中的refresh_token不一致,导致错误.
我不知道如何处理这个问题
同时, 我测试,当同时出现超过7次以上的请求时,会100%触发
感谢
vue2版:https://center.javablade.com/blade/Saber/commit/b19abfba57c4627dea4973d69dd2af58f0708075
vue3版:https://center.javablade.com/blade/Saber3/commit/bcbdd67ef37580ff820694b17d8602913a78e2e4
按照这俩新的提交内容试试看还有没有问题,另外再帮忙多测试下其他场景是否有问题。
扫一扫访问 Blade技术社区 移动端