我已经设置了JwtStrategy来对我的api端点进行身份验证。如您所见,如果JWTExpired
会引发自定义jwtPayload.expires > Date.now()
错误,如果您在catch代码块上控制错误,它将抛出错误,那么代码将再次引发相同的错误并使应用程序崩溃。我在LocalStrategy
中使用了相同的结构,以引发自定义PasswordNotMatch
错误,并且在该错误中效果很好。
passport.use(
new JWTStrategy(
{
jwtFromRequest: req => {
return req.cookies.jwt;
},
secretOrKey: secret
},
(jwtPayload, done) => {
try {
if (jwtPayload.expires > Date.now()) {
return done(null, jwtPayload);
} else {
throw new JWTExpired();
}
} catch (error) {
console.log(error);
return done(error);
}
}
)
);
答案 0 :(得分:0)
我自己找到的。我没有处理路由错误,所以当JWT过期时,正是passport.js重新抛出了我通过done(error)
传递的错误;