Javascript 在nodejs express api中使用passportjs处理过期的json web令牌

Javascript 在nodejs express api中使用passportjs处理过期的json web令牌,javascript,node.js,express,jwt,passport.js,Javascript,Node.js,Express,Jwt,Passport.js,我有一个json web令牌的工作事务,从我的express api到我的客户端本地存储。现在,我尝试实现一个刷新令牌,以处理在客户端的访问令牌过期时发出新令牌的问题。我的想法是访问令牌的生命周期为1小时,刷新令牌的生命周期为30天。但我的问题是,当passportjs身份验证发生并试图从头中提取令牌时,如果令牌过期,我甚至不会进入passport身份验证方法来处理它。有没有人会对我如何处理这件事提供一些意见/帮助 这是我在特快路线上的护照认证: const opts = { jwtFr

我有一个json web令牌的工作事务,从我的express api到我的客户端本地存储。现在,我尝试实现一个刷新令牌,以处理在客户端的访问令牌过期时发出新令牌的问题。我的想法是访问令牌的生命周期为1小时,刷新令牌的生命周期为30天。但我的问题是,当passportjs身份验证发生并试图从头中提取令牌时,如果令牌过期,我甚至不会进入passport身份验证方法来处理它。有没有人会对我如何处理这件事提供一些意见/帮助

这是我在特快路线上的护照认证:

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的令牌的刷新令牌集合。如果找到了,则以某种方式延长发送的令牌的过期时间。如果每个人都认为这是一种很好的处理方法,或者可以改进,或者我的做法完全错了,你想听听他们的意见吗?

如果json web令牌过期,你需要发送它吗?在需要刷新的情况下,只需发送刷新令牌,并返回一个新的json web令牌。例如,请参见此处: