@ApiBasicAuth()
@UseGuards(LocalAuthGuard)
@Post('login')
async login(@Request() req) {
return this.authService.login(req.user);
}
当我打开 api 文档时,此路由的身份验证显示“用户名”和“密码”字段。我想将用户名字段更改为“电子邮件”。那可能吗?
@ApiBasicAuth()
@UseGuards(LocalAuthGuard)
@Post('login')
async login(@Request() req) {
return this.authService.login(req.user);
}
当我打开 api 文档时,此路由的身份验证显示“用户名”和“密码”字段。我想将用户名字段更改为“电子邮件”。那可能吗?
向我们展示您如何为此端点定义主体架构。@nestjs/passport
不会为你定义这个。
@ApiBody({ type: LoginDto })
您可以在login
方法中添加装饰器
class LoginDto {
email: string
password: string
}
请注意,这与@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 的文档,它非常好 :)