java 拦截器ajax_在发送许多ajax请求时处理axios拦截器

我使用Larave JWT和vue2 vuex2 axios

因此,当用户登录时,我将身份验证令牌存储在vuex存储中 . 当令牌过期时,我需要刷新它 . 为了刷新它,我需要将相同的令牌发送到 /refresh 路由,并获得一个新令牌 . 至少我是如何得到的,实际上它是有效的 .

问题是拦截器捕获401响应并尝试刷新令牌,但是,如果在我的组件中我发送了许多带有过期令牌的请求,该怎么办?由于ajax请求是异步的,因此拦截器代码会运行很多次 . 所以我收到了很多刷新请求 . 刷新初始令牌后,它将被视为无效 . 当拦截器尝试刷新无效令牌服务器响应错误时,我重定向到登录页面 .

这是代码:

axios.interceptors.response.use((response) => {

return response;

}, (error) => {

const originalRequest = error.config;

if (error.response.status === 401 && !originalRequest._retry) {

originalRequest._retry = true

axios.post('auth/refresh').then((response) => {

let token = response.data.token

store.dispatch('auth/setAuthToken', token)

let authorizationHeader = `Bearer ${token}`

axios.defaults.headers = { 'Authorization': authorizationHeader }

originalRequest.headers['Authorization'] = authorizationHeader

return axios(originalRequest)

}, (error) => {

store.dispatch('auth/clearAuthInfo')

router.push({ name: 'login' })

})

}

return Promise.reject(error);

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值