Token过期后怎么自动刷新还不让用户感知?
我在用 JWT 做用户认证,前端每次请求都带 Authorization: Bearer xxx。但 token 一小时就过期,过期后接口返回 401,用户就得重新登录,体验太差了。
我看别人说可以用 refresh token 自动续期,但我试了下,在 axios 的 response interceptor 里拦截 401 后去请求新 token,结果发现如果多个请求同时触发 401,会发好几次刷新请求,还可能拿不到最新的 access token。有没有靠谱的处理方式?
axios.interceptors.response.use(
res => res,
async err => {
if (err.response?.status === 401) {
const newToken = await refreshToken(); // 这里并发会出问题
localStorage.setItem('token', newToken);
// 重试原请求...
}
}
);
暂无解答