我在vue js(main.js)中为刷新令牌编写了axios interceptor
,我想当我在项目中收到401
错误状态代码时,尝试使用refresh_token获取新令牌并发送使用新令牌再次请求
如果刷新令牌也是无效的,我也想重定向到登录页面并中断axios请求
但是我的问题是,当刷新令牌无效时,我将陷入刷新令牌api调用的循环,并且我将在控制台中收到多个错误(duplicate navigation)
另一个问题是我无法捕捉到catch block
中的错误,并且总是到then block
并且响应为undefined
axios.interceptors.response.use((response) => {
return response
},
function (error) {
const originalRequest = error.config;
if (error.response.status === 401) {
axios.post(process.env.VUE_APP_BASE_URL + process.env.VUE_APP_REFRESH_TOKEN,
{
"refresh_token": localStorage.getItem("refresh_token")
})
.then(res => {
localStorage.setItem("token", "Bearer " + res.data.result.access_token);
originalRequest.headers['Authorization'] = localStorage.getItem("token");
return axios(originalRequest);
}).catch(error=>{
console.log(error);
router.push({'name':'login'})
})
}
});
答案 0 :(得分:0)
您可以尝试添加标志。例如,
keyfarmercas = append(keyfarmercas, pcdcorder.ParentInfo.PCOrderID)