【发布时间】:2023-03-06 10:19:01
【问题描述】:
逻辑: 每个请求都有一个 JWT 授权标头来验证用户的身份。如果过期,则有一个准备好刷新 JWT 的 cookie 端点。
我正在使用 axios 和 拦截器响应 来检查客户端是否收到 401 来尝试刷新 JWT。 cookie 可能有效或无效。
问题是刷新 JWT 的拦截器永远不会停止触发,我认为我的请求同步有问题。以下是我的代码:
function refreshToken(dispatch) {
return new Promise((resolve, reject) => {
instance.put('/auth').then((response) => {
dispatch({ type: "UPDATE_AUTH", payload: response.data });
resolve(response);
})
.catch((error) => {
reject(error);
});
});
}
instance.interceptors.response.use(
response => {
return response;
},
err => {
const error = err.response;
if (error.status === 401 && error.config && !error.config._retry) {
error.config._retry = true;
return refreshToken(dispatch).then((resp) => {
return instance(error.config);
})
.catch((e) => {
return Promise.reject(e);
});
}
return Promise.reject(error);
}
);
【问题讨论】:
标签: javascript reactjs axios