在 NESTJS 的装饰器中验证 JWT

Auth JWT in decorator in NESTJS

如何在 nestjs 的装饰器中解码 jwt cookie?我不能在装饰器中使用“private readonly jwtService: JwtService”,我使用 jwt-decode 但它在 jwt 过时时仍然有效

在这种情况下,您可以创建一个 custom decorator

//user.decorator.ts
import { createParamDecorator, ExecutionContext } from '@nestjs/common';

export const User = createParamDecorator((data: any, ctx: ExecutionContext) => {
  const request = ctx.switchToHttp().getRequest();
  return request.user;
});

现在我们可以在控制器中使用这个用户装饰器

//user.controller.ts
import { User } from './user.decorator';

@Get()
async getUser(@User() user) {
  //console.log(user);
}

您应该必须使用 AuthGuard 来解码 JwtToken

请参考以下来自 NestJs 的文档 https://docs.nestjs.com/security/authentication#implementing-passport-jwt