如何使节点 js 中的 jwt 过期?
Posted
技术标签:
【中文标题】如何使节点 js 中的 jwt 过期?【英文标题】:How can i expire a jwt in node js? 【发布时间】:2014-12-29 07:06:35 【问题描述】:我在 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);
);
);
【问题讨论】:
【参考方案1】:这是一个最小的测试用例,展示了它按预期工作的示例:
'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' 验证令牌时使用变量 secret 对令牌进行签名。会不会是这个问题?
【讨论】:
如何查看是否过期??如果令牌尚未过期,我想发送响应。以上是关于如何使节点 js 中的 jwt 过期?的主要内容,如果未能解决你的问题,请参考以下文章