无感刷新, refresh_token失效

Blade 已结 0 164
nonone
nonone 2024-08-26 11:21

token无感刷新的情况下, 如果短时间连续请求多次401,同时触发无感刷新, 第一次生效后,会导致后续刷新token的请求refresh_token失效

一、该问题的重现步骤是什么?

1. 开启单人登录模式和有状态token

2. 登录成功后, 在redis工具中删除token, 不要删除refresh_token

3.前端刷新页面(连续发送多次(6次以上)后端接口请求,例如dict)


二、你期待的结果是什么?实际看到的又是什么?

期待正常刷新token正常访问页面

实际某个刷新token的请求报了"令牌刷新错误或无效"导致请求到登录页面

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

商业版4.1.0  Windows

四、请提供详细的错误堆栈信息,这很重要。

image.png

五、若有更多详细信息,请在下面提供。

回答
  •  admin
    admin (楼主)
    2024-08-26 11:37

    你看下第二个refreshToken接口调用具体报错的日志是什么,我本地没有重现,按理说refreshToken有效期都是可以直接刷新的。还得看下你的具体报错,才能来判断。

    作者追问:2024-08-26 11:37

    错误的返回如下:

    image.png

    我排查的原因为: 第一次刷新token成功时, 会修改redis中的refresh_token, 导致第二次请求刷新token时, 请求到后端的refresh_token与redis中的refresh_token不一致,导致错误.


    我不知道如何处理这个问题


    同时, 我测试,当同时出现超过7次以上的请求时,会100%触发


    感谢


    回答: 2024-08-26 11:37

    vue2版:https://center.javablade.com/blade/Saber/commit/b19abfba57c4627dea4973d69dd2af58f0708075

    vue3版:https://center.javablade.com/blade/Saber3/commit/bcbdd67ef37580ff820694b17d8602913a78e2e4


    按照这俩新的提交内容试试看还有没有问题,另外再帮忙多测试下其他场景是否有问题。

    0 讨论(1)
提交回复