vue axios实现刷新token并继续之前的请求怎么破?在拦截器中如何设置,能不能提供代码?
我在拦截器中的设置是下面的写法,但是并不会继续进行当前的请求,假设我要获取一个列表信息,当token过期后这样设置在刷新token后并不会继续获取列表信息的请求,请问哪里有问题,该如何解?
instance.interceptors.request.use(config => {
if (!config.url.includes('/users')) {
config.headers['x-access-token'] = Cookies.get(TOKEN_KEY)
config.headers['Authorization'] = 'Bearer ' + Cookies.get(TOKEN_KEY)
}
if(Cookies.get(TOKEN_KEY)) {
if(isTokenExpired() && config.url.indexOf('refresh') === -1) {
console.log(window.isRefreshing);
if(!window.isRefreshing) {
window.isRefreshing = true;
store.dispatch('refreshToken').then(function () {
config.headers['x-access-token'] = Cookies.get(TOKEN_KEY)
config.headers['Authorization'] = 'Bearer ' + Cookies.get(TOKEN_KEY)
window.isRefreshing = false;
})
}
}
}
// 添加全局的loading...
if (!Object.keys(this.queue).length) {
// Spin.show() // 不建议开启,因为界面不友好
}
this.queue[url] = true
return config
}, error => {
return Promise.reject(error)
})
没猜错的话,
refreshToken
这个action
是异步的吧?可能还没更新
token
,拦截器函数已经return config
了。