这是我目前的代码:
axios.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
axios.get("/auth/token").then((res) => {
if (res.status === 200) {
console.log("Access token refreshed");
return axios(originalRequest);
}
});
} else {
return Promise.reject(error);
}
}
);它像预期的那样刷新令牌,但没有重新尝试原始请求。如果请求显示一些数据,我只能在重新加载页面或更改到其他路由并再次返回以重新呈现组件时才能看到它。
根据我的理解,如果原始请求碰到了一个错误401,那么拦截器应该刷新令牌并重试该调用--这将再次触发拦截器,但现在将得到一个成功的响应--并将这个新响应传递回原来的承诺,对吗?
发布于 2021-12-31 02:47:52
您需要返回axios函数:
...
return axios.get("/auth/token").then((res) => {
if (res.status === 200) {
console.log("Access token refreshed");
return axios(originalRequest);
}
});https://stackoverflow.com/questions/70538409
复制相似问题