0

我已经设置 JwtStrategy 来验证我的 api 端点。如您所见,如果您在 catch 块上控制台错误,我会抛出自定义JWTExpired错误jwtPayload.expires > Date.now(),它会,然后代码将再次抛出相同的错误并使应用程序崩溃。我使用了相同的结构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);
      }
    }
  )
);
4

1 回答 1

0

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

于 2019-01-15T20:15:19.490 回答