我有一个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的令牌的刷新令牌集合。如果找到它,会以某种方式延长已发送的令牌的到期时间。如果他们认为这是一种处理它的好方法,或者如果它可以改进或者我只是去,那么我想听听每个人的意见。关于这一切都错了?