Token过期后怎么自动刷新还不让用户感知?

Zz爱红 阅读 103

我在用 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);
      // 重试原请求...
    }
  }
);
我来解答 赞 5 收藏
二维码
手机扫码查看
暂无解答

暂无解答