我刚刚在nodejs.i的后端实现了jwt-simple,希望在给定时间内使令牌过期。
var jwt = require('jwt-simple');
Schema.statics.encode = (data) => {
return JWT.encode(data, CONSTANT.ADMIN_TOKEN_SECRET, 'HS256');
};
Schema.statics.decode = (data) => {
return JWT.decode(data, CONSTANT.ADMIN_TOKEN_SECRET);
};
如何在jwt-simple
中添加过期时间答案 0 :(得分:4)
没有默认exp
。有两种方法可以手动添加:
使用普通的js:
iat:Math.round(Date.now()/ 1000), exp:Math.round(Date.now()/ 1000 + 5 * 60 * 60)
使用moment.js
:
iat:moment()。unix(), exp:moment()。add(5,'hours')。unix()
答案 1 :(得分:1)
您可以在护照策略功能中使用到期日期验证您的令牌,如下所示:
passport.use(new JwtStrategy(opts, function(jwt_payload, done){
User.find({id: jwt_payload.id}, function(err, user){
if (err) {
return done(err, false, {message: "Incorrect Token!!"});
}
if (user) {
if (user[0].token_expiration_date <= Date.now()){
return done(null, false, {message: "Expired Token"});
}else{
return done(null, user);
}
}else{
return done(null, false, {message: "Incorrect Token"});
}
});
}));
希望这可以帮助你。
答案 2 :(得分:0)
改用jsonwebtoken。
https://github.com/auth0/node-jsonwebtoken
const jwt = require(`jsonwebtoken`)
const token = jwt.sign({
data: 'foobar'
}, 'secret', { expiresIn: '1h' });
答案 3 :(得分:0)
您可以在调用create函数之前在有效负载中使用exp字段,例如,您可以使用moment获取时间并添加所需的任何内容。如果要检查令牌是否已过期或其他类型的错误,则可以使用jwt-simple-error-identify代替。
在他的文档中有一个示例。
https://www.npmjs.com/package/jwt-simple-error-identify
答案 4 :(得分:0)
更精确地说,在数据对象中添加exp
属性,其中exp
是unix格式的到期时间。
例如
var data = {"data":["some data"],exp:16872131302}
var jwt = require('jwt-simple');
Schema.statics.encode = (data) => {
return JWT.encode(data, CONSTANT.ADMIN_TOKEN_SECRET, 'HS256');
};
Schema.statics.decode = (data) => {
return JWT.decode(data, CONSTANT.ADMIN_TOKEN_SECRET);
};