【发布时间】:2021-10-17 17:22:58
【问题描述】:
@UseGuards(JwtAccessTokenAuthGuard)
@ApiBearerAuth()
@SetMetadata('roles', Role.ADMIN)
@UseGuards(RolesGuard)
@Post('/add/card')
addCard(@Body() addCardDto: AddCardDto) {
return this.storeService.addCard(addCardDto);
}
这是角色卫士
canActivate(context: ExecutionContext): boolean {
const roles = this.reflector.get<string[]>('roles', context.getHandler());
if (!roles) {
return true;
}
const user = context.switchToHttp().getRequest().user;
return this.matchRoles(roles, user.user_type);
}
在此,请求对象在主体或函数addCard 中有用户,但在RoleGuard 中没有。他们说未定义。为什么这样?在JwtAccessTokenGuard我返回了用户属性。
我想在 Guard 内部而不是在功能中检查它。我做错了什么。
【问题讨论】:
标签: nestjs