我正在使用npm中的jsonwebtoken
模块,我正在尝试使令牌过期,但它似乎没有过期。这是我的代码:
app.post('/token', function(req, res) {
name = 'Name'
var token = jwt2.sign(name, secret, { expiresInMinutes: 5 });
res.end(token);
});
我稍后会在这里使用此令牌:
app.post('/feed', function(req, res) {
console.log('hiiiiii');
token = req.body.token;
console.log('access-token :' + token);
jwt2.verify(token, 'secret', function(err, decoded) {
if (err) {
err = {
name: 'TokenExpiredError',
message: 'jwt expired',
expiredAt: 1408621000
}
console.log(err.name);
} else {
console.log('decoded token:' + decoded);
res.end(decoded);
}
});
});
答案 0 :(得分:0)
这是一个最小的测试用例,展示了它按预期工作的示例:
'use strict';
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh', { expiresInMinutes: 1});
console.log(token);
setTimeout(function() {
jwt.verify(token, 'shhhhh', function(err, decoded) {
if(err) {
console.error('err: ', err);
} else {
console.log('decoded: ', decoded);
}
});
}, 1000 * 62);
运行此测试用例时,我得到以下输出:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MTQ5Mzk5MTYsImV4cCI6MTQxNDkzOTk3Nn0.O5zrNrkrhPk_2RekdRwm-nTbHvDIWhsjf_uSWLPfdJQ
err: { [TokenExpiredError: jwt expired]
name: 'TokenExpiredError',
message: 'jwt expired',
expiredAt: Sun Nov 02 2014 09:52:56 GMT-0500 (EST) }
您使用变量机密签署令牌,同时使用字符串' secret'进行验证。这可能是问题吗?