猿问

JWT 中的刷新和访问令牌流

我开发了一个标准的 JWT 系统,可以登录并发布访问令牌和刷新令牌。访问令牌在短时间后过期,并且有刷新令牌的路径。

axios过去常常提出请求,但我不确定如何处理过期的令牌。例如,如果我/secret_route使用我的访问令牌发出请求并且它已过期,我是否需要等待 a403然后发出请求/refresh_token然后再次发出原始请求?从编程的角度来看似乎很混乱,并且在网络上相当浪费。有没有一种有效/优雅的方法来做到这一点?


慕勒3428872
浏览 105回答 1
1回答

桃花长相依

我最终得到了一个我认为比检查时间戳更可靠的解决方案。谢谢@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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答