使用 Node.js 和 jsonwebtoken 在哪里做 JWT 到期?

alb*_*dev 6 cookies token node.js jwt

我正在创建一个基于 MEAN 的 Web 应用程序,我有以下问题:

在哪里放置令牌(JWT)过期更好?现在我正在做的是创建一个没有过期的令牌,在客户端中,我使用该令牌和 10 分钟的过期时间创建了一个 cookie。

在那个 cookie 中,我在我提出的每个请求中添加 10 分钟。如果用户在 10 分钟内处于非活动状态,则该 cookie 将过期并且在没有令牌的情况下发出请求。

Joe*_*lay 7

在 Chrome 中:

F12 ?? 应用选项卡 ?? 饼干 ??将令牌复制并粘贴到 Postman 等 REST 客户端中

哎呀,我刚刚为您的 API 获得了一个永久令牌!

换句话说,正如你所怀疑的,这不是一个好的做事方式。到期时间应该在令牌的有效负载中 - 这样,您可以验证没有人更改它,因为它将使用您的服务器机密值进行签名。

Node JWT 库实际上内置了这个功能

jwt.sign({
  // 1 hour expiration
  exp: Math.floor(Date.now() / 1000) + (60 * 60),
  data: 'foobar'
}, 'secret');
Run Code Online (Sandbox Code Playgroud)

这并不是说你不能/不应该使用cookie有效期与您的令牌,但仅仅依靠它并不安全。