-
Notifications
You must be signed in to change notification settings - Fork 277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
重复请求会不会生成多个token #14
Comments
防止重复刷新accessToken,有什么解决方案吗? |
正常情况下是不会的,多个请求下,某一个一旦刷新了AccessToken,其他请求如果不是携带最新的AccessToken是无法通过验证的 |
那一个页面请求多个接口,第一个接口把token刷新了。后面不就请求失败了吗? |
一般同时请求多个接口应该是只有axios可以吧,应该可以异步回调解决吧,这是前端处理了,我前端不是很熟 |
OK 好的,暂时还没遇到这种问题。以后观察看看 |
其实token失效,自动刷新token,在页面只有一个请求的时候是比较好处理的,但是如果页面同时有多个请求,并且前面的请求正好产生token失效,这就需要一些稍微复杂的处理 解决方式主要是用了Promise 函数来进行处理。前端每一个token失效的请求(后端返回状态码给前端,知道这个请求是token过期了)都会存到一个Promise函数集合里面,当刷新token的函数执行完毕后,才会批量再执行这些Promise函数,返回请求结果。还有一点要注意一下,这儿设置一个刷新token的开关isRefreshing,这个是非常有必要的,防止重复请求 |
@javabye 我也遇到这样的问题了,多个请求同时访问,正好refreshToken失效,前一个请求更新了refreshToken和accessToken,后一个请求就报出失效错误了,这是因为,前一个请求流程还没有走完回到前端,没来的及更新前端的accessToken,后一个请求带着之前旧的的accessToken请求就来了,而此时前一个请求已经更新了refreshToken,自然和后一个请求accessToken里的时间戳对不上了。下面说下我的解决方案,希望大家提提意见,方法是服务始终保留两个时间戳,简单的画了个图, |
这有一点点复杂啊,哈哈,不过写一次就好了,好像看这个,前端也可以处理的:https://segmentfault.com/a/1190000016946316 |
想了一下还是后端处理最安全,前端处理还是不行 |
重新开了一个 Issues,说明了前端还有后端怎么解决 Token 刷新下,并发请求怎么处理的问题 就是同时多个请求,第一个请求刷新了 Token,后面的请求还是携带的刷新前的旧 Token 就无法通过,该怎么处理 |
同一个页面一般情况下都会同时请求多个后台接口,当accessToken失效的时候,同时有多个请求,后端会不会刷新出多个newtoken的问题?
The text was updated successfully, but these errors were encountered: