如何在嵌套js中的装饰器上使用req.user获取用户数据

时间:2020-06-10 09:16:34

标签: nestjs nestjs-passport

我创建了身份验证(jwt),并且该过程已正确完成。

我可以使用以下代码访问用户的信息,但不能使用装饰器获取用户的信息!

控制器:

@Post('/me/info')
  @UseGuards(AuthGuard())
  myInfo(
    @GetUser() user,
    @Req() req,
  ) {
    console.log(user); // undefined 
    console.log(req.user); // get user data object
  }

我的装饰器是:

import { createParamDecorator } from '@nestjs/common';
import { User } from './user.entity';

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

我的代码有什么问题?

2 个答案:

答案 0 :(得分:6)

问题出在createParamDecorator

摘录自offcial manual on custom decorators

import { createParamDecorator, ExecutionContext } from '@nestjs/common';

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

答案 1 :(得分:0)

嗨,我正在使用Typescript和graphql,所以上述解决方案对我不起作用。也许您应该看到此解决方案。

NestJS custom decorator returns undefined