【问题标题】:nodejs - JSONWebToken does not expirenodejs - JSONWebToken 不会过期
【发布时间】:2015-04-20 02:10:55
【问题描述】:

我实现了 jsonwebtoken (https://www.npmjs.com/package/jsonwebtoken) 并做了两个简单的函数。 一种用于创建/签署具有过期时间的令牌,另一种用于验证令牌。

我使用jwt.sign('userdata', 'abc', {expiresInSeconds: 1}); 对令牌进行签名。 令牌应该在一秒钟后过期,但是当我使用 jwt.verify(token, 'abc', function(err, decoded) { } 验证令牌时,var err 是空的,decoded 返回 userdata

【问题讨论】:

  • 您确定要等待一秒钟再尝试解码吗?
  • 我刚刚用我问之前生成的相同令牌再次尝试它仍然有效,所以是的。

标签: node.js jwt


【解决方案1】:

jsonwebtoken 库只允许您签署对象,而不是字符串。 An issue 表示规范对此有点不清楚,但库选择只对对象进行操作。

此代码按预期工作。请注意,我已将字符串替换为 Object。

token = jwt.sign({ data: 'userdata' }, 'abc', {expiresInSeconds: 1});
setTimeout(function() {
  jwt.verify(token, 'abc', function(err, decoded) {
    console.log(err, decoded);
  })
}, 2000);

输出:

{ name: 'TokenExpiredError',
  message: 'jwt expired',
  expiredAt: Sun Apr 19 2015 11:08:36 GMT-0700 (Pacific Daylight Time) }

【讨论】:

    猜你喜欢
    • 2015-05-06
    • 2016-01-21
    • 2015-02-22
    • 2018-05-15
    • 2016-10-04
    • 1970-01-01
    • 2017-02-09
    • 2020-02-01
    相关资源
    最近更新 更多