我正在尝试将护照集成到 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);
});