0

我正在尝试将护照集成到 NestJS 中,并使用装饰器在任何地方获取当前的身份验证信息。我的 NestJs 版本太旧了,我更新了 NestJS 版本,改成下面的代码。更改中间件代码后,我无法再获取当前的身份验证信息。

如何使用更改后的中间件获取身份验证信息?

更改中间件之前的代码:

 export class authMiddlware implements NestMiddleware {
  async resolve(): Promise<MiddlewareFunction> {
    return async (req, res, next) => {
      passport.authenticate('jwt', { session: false }, (err, user, info) => {

        if (err) {
          return next(err);
        }

        if (user) {
          req.user = user;
        }

        return next();
      })(req, res, next);
    };
  }

更改中间件后:passport.authenticate我可以从请求中获取更改后的用户,但在护照之外,我无法从请求中获取用户。


 @Injectable()
 export class authMiddlware implements NestMiddleware {
   use(req: Request, res: Response, next: Function) {
      passport.authenticate('jwt', { session: false }, (err, user, info) => {

        if (err) {
          return next(err);
        }

        if (user) {
          req.user = user;
        }

        console.log(req.user)

        next();
      })(req, res, next);

      console.log(req.user)
    };
  }

user.decorator:

export const passUser= createParamDecorator((data, req) => {
  return plainToClass(User, req.user);
});

4

0 回答 0