没有Redis / DB的NodeJS刷新令牌

时间:2019-09-06 03:07:37

标签: node.js jwt

据我了解,通证及其到期时间有3种方法。在开发期间,我使用了不会过期的令牌,但是在生产前需要一些更好的东西,但不一定需要永久实现的东西。我正在使用带有jsonwebtoken的NodeJS来交付给移动客户端。

选项:

  1. 令牌不会过期,从而使您的应用程序无法正常运行。
  2. 使用Redis并刷新令牌。令牌过期后,请使用刷新令牌来生成新令牌。刷新令牌的有效期很长,必须安全地存储在客户端。
  3. 每次使用短时令牌进行呼叫时,请提供一个新的令牌,其有效期为15分钟。客户端对每个请求使用新令牌。

为什么第三个选项无效?

1 个答案:

答案 0 :(得分:0)

我建议使用第四个选项:

  • 使用jwt创建一个刷新令牌,并且其到期日期比访问令牌更长。因此有效载荷看起来像这样:

访问令牌:

{ type: "access-token", sub: "<userid>", exp: "<1 day>" }

刷新令牌:

{ type: "refresh-token", sub: "<userid>", exp: "<1 year>" }

现在,您不需要将刷新令牌存储在redis或任何其他存储系统中,因为令牌的所有者位于有效负载中,并且可以使用jwt来检查令牌的有效性。

对于您的第三个选项,这不是一个好主意,因为如果用户15分钟不使用您的系统,则他将不得不再次登录。