vue.js使用axios拦截器刷新jwt标记

2vuwiymt  于 2022-11-17  发布在  Vue.js
关注(0)|答案(1)|浏览(190)

我试图刷新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拦截器中发生的事情,看起来它已经成功地将请求发送到后端并刷新了用户令牌。

mnemlml8

mnemlml81#

如果你的axios版本在**(1. 1. 0)到(1. 1. 3)**之间,就会出现这样的问题,但是降级到版本(0. 27. 2)就可以正常工作了。https://github.com/axios/axios/issues/5143
似乎更高版本的问题仍未解决

相关问题