使用nodejs中的passportjs处理过期的json web令牌表达api

时间:2017-06-15 00:02:33

标签: javascript node.js express jwt passport.js

我有一个json网络令牌的工作交易,从我的快递api到我的客户端本地存储。现在,我正在尝试实现刷新令牌,以便在客户端的访问令牌过期时处理发出新令牌。我的想法是让访问令牌生命为1小时,刷新令牌为30天。但我的问题是,当passportjs身份验证发生并尝试从标头中提取令牌时,如果令牌过期,我甚至没有进入护照身份验证方法来处理它。对于我如何处理这个问题,有人会有一些意见吗?

这是我的快速路线中的护照认证:

const opts = {
    jwtFromRequest : ExtractJwt.fromAuthHeaderWithScheme('Bearer'),
    secretOrKey : 'secret',
    passReqToCallback: true
};

    //This is the method I can't get in that is just returning a 401 on expired tokens
    //unless I add to the options: ignoreExpiration.
    passport.use(new JwtStrategy(opts, function(req, jwtPayload, done) {
        jwt.verify(jwtPayload, 'secret', function(err, decoded) {
            if (err) {
                console.log(err);
            } else {
                console.log(decoded);
            }
        });
        userService.getUserById(jwtPayload.id).then((user) => {
            user ? done(null, user) : done(null, false);
        });
    }));

在上面的代码中,我正在寻找一种方法来处理过期的令牌,如果这是正确的方法。但理想情况下检查传入的当前令牌是否已过期。然后,如果是,请检查包含用户ID的令牌的刷新令牌集合。如果找到它,会以某种方式延长已发送的令牌的到期时间。如果他们认为这是一种处理它的好方法,或者如果它可以改进或者我只是去,那么我想听听每个人的意见。关于这一切都错了?

0 个答案:

没有答案