无法处理在JWTStrategy回调中引发的错误

时间:2019-01-14 17:20:40

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

我已经设置了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);
      }
    }
  )
);

1 个答案:

答案 0 :(得分:0)

我自己找到的。我没有处理路由错误,所以当JWT过期时,正是passport.js重新抛出了我通过done(error)传递的错误;