我试图刷新vue.js中的用户jwt令牌。因此,我的解决方案是,当用户发送带有过期令牌的请求时,令牌被拒绝,状态代码为401,然后在axios intereceptors中,我尝试通过向后端发送令牌刷新请求来刷新令牌。问题是,当令牌刷新发生时,它没有重复原始请求
axios.interceptors.response.use(function (response) {
return response
}, async function (error) {
if(error.response.status===401){
let newtokens= await axios.post('RefreshToken',{
oldtoken:store.state.user.token,
refreshtoken:store.state.user.refreshtoken
})
let user=store.state.user
console.log(user)
user.token=newtokens.data.token
user.refreshtoken=newtokens.data.refreshtoken
axios.defaults.headers.common['Authorization']='Bearer '+ user.token
console.log(newtokens)
store.dispatch("user",user)
console.log(store.state.user)
return axios(error.config)
}
return Promise.reject(error)
})
我试着控制台记录axios拦截器中发生的事情,看起来它已经成功地将请求发送到后端并刷新了用户令牌。
1条答案
按热度按时间mnemlml81#
如果你的axios版本在**(1. 1. 0)到(1. 1. 3)**之间,就会出现这样的问题,但是降级到版本(0. 27. 2)就可以正常工作了。https://github.com/axios/axios/issues/5143
似乎更高版本的问题仍未解决