为了账号安全,请及时绑定邮箱和手机立即绑定

JWT 中的刷新和访问令牌流

JWT 中的刷新和访问令牌流

慕勒3428872 2022-12-22 10:10:12
我开发了一个标准的 JWT 系统,可以登录并发布访问令牌和刷新令牌。访问令牌在短时间后过期,并且有刷新令牌的路径。我axios过去常常提出请求,但我不确定如何处理过期的令牌。例如,如果我/secret_route使用我的访问令牌发出请求并且它已过期,我是否需要等待 a403然后发出请求/refresh_token然后再次发出原始请求?从编程的角度来看似乎很混乱,并且在网络上相当浪费。有没有一种有效/优雅的方法来做到这一点?
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

我最终得到了一个我认为比检查时间戳更可靠的解决方案。谢谢@Bergi,但我担心系统时钟。我使用 axios 拦截器刷新 401 上的令牌


  // Request interceptor for API calls

  axios.interceptors.request.use(

    async config => {

      config.headers = { 

        'Authorization': `Bearer ${localStorage.getItem("accessToken")}`,

        'Accept': 'application/json',

      }

      return config;

    },

    error => {

      Promise.reject(error)

  });


  // Allow automatic updating of access token

  axios.interceptors.response.use(response => response, async (error) => {

    const originalRequest = error.config;

    if (error.response.status === 401 && !originalRequest._retry) {

      originalRequest._retry = true;

      const res = await axios.post('/users/token', { token: localStorage.getItem('refreshToken') });

      setToken(res.data.accessToken);


      return axios.request(originalRequest);

    }

    return Promise.reject(error);

  });

改编自https://thedutchlab.com/blog/using-axios-interceptors-for-refreshing-your-api-token


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信