我正在使用JWT-'jsonwebtoken'存储库。
我想创建一个令牌并检查它何时过期,如果它过期了,它应该返回一个错误。由于某种原因,我得到了解码(分辨率)。
要创建我正在使用的令牌:
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
}
希望有人解决了这个问题,可以在这里提供帮助... 泰,伊泰。
答案 0 :(得分:1)
jwt.sign(有效载荷,secretOrPrivateKey,[选项,回调])
如果要在有效负载上传递expiresIn,则应使用 exp 而不是 expiresIn :
jwt.sign({
exp: Math.floor(Date.now() / 1000) + (60 * 60),
data: 'foobar'
}, 'secret');
如果要使用 expiresIn ,则必须在选项上将其传递:
const SECRET_KEY = 'It@y W@$ H3r3';
const options = {
expiresIn: 5,
};
jwt.sign({}, SECRET_KEY, options, callback);
从一个叫Yury的朋友那里得到了答案。 谢谢。