如何在jwt-simple中过期令牌?

时间:2016-10-19 07:00:38

标签: javascript node.js express jwt

我刚刚在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

中添加过期时间

5 个答案:

答案 0 :(得分:4)

没有默认exp。有两种方法可以手动添加:

  1. 使用普通的js:

    iat:Math.round(Date.now()/ 1000), exp:Math.round(Date.now()/ 1000 + 5 * 60 * 60)

  2. 使用moment.js

    iat:moment()。unix(), exp:moment()。add(5,'hours')。unix()

  3. 来自原始Github存储库的

    Source

答案 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);
};