superman66/vue-axios-github

在一个页面有多个请求返回401的情况下 登入会有点问题

huan0118 opened this issue · 3 comments

比如我在某个页面有两个请求,现在我把localStorage里面的token手动改掉刷新,问题就来了,因为http的请求拦截在401的情况下
image总是会把fullPath当做redirect传递过去 两次的请求返回都是401且返回时间不在同一个时间点导致前面一个401到登入页来了 后面一个401又把登入页面的fullPath给到redirect。这时的登入页会有两个redirect组成的路由这种情况怎么处理

你指的登录页会有两个 redirect 参数吗?比如这种:

xxxx/login?redirect=path1&redirect=path2

不是。我是指非登入(a)页面,有两个请求,在第一个请求返回的结果是401的情况下,axios的拦截会跳到登入页。但是在a页面还有个请求他和前面的请求返回的时间相差了那么一点导致,前面的请求已经router.replace到登入页了。a页面的第二个请求这时再次返回401router.replace这时再次重定向到登入页(此时的当前页已经是登入页了)就会出现/?redirect=%2F%3Fredirect%3D%252Ftesting%253FTestingId%253D90
解析出来

"/?redirect=/?redirect=/testing?TestingId=90"

已经修复了。确实是个 Bug。只需要判断下,如果当前路由是登录路由就不进行重定向即可。
https://github.com/superman66/vue-axios-github/blob/master/src/http.js#L41