1

我创建了一个中间件来检查jwt 令牌是否已过期。

由于某种原因,TokenHasExpiredError没有被拦截为passport.authenticate.

这是我的中间件

import { Request, Response, NextFunction } from 'express';
import passport from 'passport';

import { ApiError } from '../classes/error';

const authJwt = (req: Request, res: Response, next: NextFunction) => {
  passport.authenticate('jwt', function (err, user, info) {
    // TokenExpiredError is not considered as an error?
    if (err) return next(err);
    if (!user) {
      if (info.name === 'TokenExpiredError') {
        return next(ApiError.jwtTokenExpired('Jwt Token Expired'));
      }
      return next(ApiError.unauthenticated('User is not authenticated'));
    }
    req.user = user;
    next();
  })(req, res, next);
};

export default authJwt;

我有一些问题:

  1. 从上面的代码中,为什么TokenExpiredError或任何其他错误没有被拦截为错误。
  2. info回调中的参数是什么?我在文档中找不到它。
4

0 回答 0