使用刷新令牌刷新 JWT

时间:2021-03-05 06:04:34

标签: node.js jwt

我正在使用它的其余 API 构建 SPA 应用程序,但在我应该使用刷新令牌刷新 JWT 时找不到信息。当我从服务器收到 401 HTTP 状态(JWT 过期)时,我应该这样做吗?例如,如果可能的话,每 15 分钟一次(在 JWT 过期之前)?

2 个答案:

答案 0 :(得分:2)

我不是安全专家,但据我们所知,我们

1- 登录并保存收到的令牌

2- 我们放置了一个拦截器来检查每个响应(在 angular 中很容易,在反应中我们通常使用 axios ...等)

3- 我们检查拦截器中的每个响应,如果响应是 401 并且来自令牌的 expiration date 已经通过,我们发送一个 refresh token请求并保存新令牌

要检查到期日期,您可以使用解码令牌的库,例如:jwt-decode on npm,(不要忘记将过程包装在 try...catch 中,以防有人弄乱令牌)和您甚至可以将令牌粘贴到 https://jwt.io/ 中并亲自查看解码后的令牌并检查到期日期。

4- 使用新令牌重复上一个请求应该会成功。

5- 例如,如果刷新令牌请求失败,只需将用户重定向到登录页面

答案 1 :(得分:1)

如果服务器在 access_token 过期的情况下发送正确的错误代码,那么您可以在客户端拦截错误代码并使用您之前在身份验证期间获得的 refresh_token 来获取新的访问令牌。您可以一次又一次地重复此过程,直到您的刷新令牌过期。在这种情况下,您应该重定向用户以执行身份验证以获取两个令牌。