【问题标题】:jwt.verify returns res also when token expiredjwt.verify 在令牌过期时也返回 res
【发布时间】:2018-11-30 19:59:52
【问题描述】:

我正在使用 JWT-'jsonwebtoken' 存储库。

我想创建一个令牌并检查它何时过期,如果它过期,它应该返回一个错误。由于某种原因,我得到了解码(res)。

创建我正在使用的令牌:

const jwt = require('jsonwebtoken');

const SECRET_KEY = 'It@y W@$ H3r3';
const options = {
    expiresIn: '5s',
};

const callback = (err, token) => {
    console.log('Token:', token);
    setTimeout(() => {
        jwt.verify(token, SECRET_KEY, (err, res) => {
            console.log('res', res);
            console.log('err', err);
        });
    }, 10000);
};

jwt.sign(options, SECRET_KEY, callback);

由于某种原因,我得到了解码:

{ expiresIn: '5s', iat: 1543574822 }

我应该得到这样的错误:

err = {
    name: 'NotBeforeError',
    message: 'jwt not active',
    date: 2018-10-04T16:10:44.000Z
  }

希望有人解决了这个问题并可以在这里提供帮助... 泰,伊泰。

【问题讨论】:

    标签: javascript jwt


    【解决方案1】:

    jwt.sign(payload, secretOrPrivateKey, [options, callback])

    如果您想在有效负载上传递 expiresIn,您应该使用 exp 而不是 expiresIn

    jwt.sign({
      exp: Math.floor(Date.now() / 1000) + (60 * 60),
      data: 'foobar'
    }, 'secret');
    

    如果你想使用 expiresIn,你必须在 options 上传递它:

    const SECRET_KEY = 'It@y W@$ H3r3';
    const options = {
        expiresIn: 5,
    };
    
    jwt.sign({}, SECRET_KEY, options, callback);
    

    从一位名叫 Yury 的朋友那里得到了答案。 谢谢。

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2020-11-27
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2016-08-06
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多