0
  @ApiBasicAuth()
  @UseGuards(LocalAuthGuard)
  @Post('login')
  async login(@Request() req) {
    return this.authService.login(req.user);
  }

当我打开 api 文档时,此路由的身份验证显示“用户名”和“密码”字段。我想将用户名字段更改为“电子邮件”。那可能吗?

4

2 回答 2

0

向我们展示您如何为此端点定义主体架构。@nestjs/passport不会为你定义这个。

@ApiBody({ type: LoginDto })您可以在login方法中添加装饰器

class LoginDto {
  email: string
  password: string
}
于 2021-03-22T17:37:42.407 回答
0

请注意,这与@nestjs/swagger. 您需要将配置传递给class LocalStrategy提供程序中的 passportjs,如下所示:

@Injectable()
export class LocalStrategy extends PassportStrategy(Strategy) {
  constructor(private authService: AuthService) {
    super({ usernameField: 'email' })
  }
  ...
}

正如文档所述:https ://docs.nestjs.com/security/authentication#implementing-passport-local

请阅读整个 Nestjs 的文档,它非常好 :)

于 2021-03-22T17:01:37.993 回答