如果不是管理员,我会尝试阻止某些 root,但是当我运行代码时,出现 TypeError 但我不知道如何解决它。
谢谢
角色.guards.ts
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { Role } from './role.enums';
import { ROLES_KEY } from './roles.decorator';
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(context: ExecutionContext): boolean {
const requiredRoles = this.reflector.getAllAndOverride<Role[]>(ROLES_KEY, [
context.getHandler(),
context.getClass(),
]);
if (!requiredRoles) {
return true;
}
const { user } = context.switchToHttp().getRequest();
return requiredRoles.some((Role) => user.roles?.includes(Role));
}
}
Run Code Online (Sandbox Code Playgroud)
文章.controller.ts
@UseGuards(JwtAuthGuard)
@Roles(Role.Admin)
async addArticle(
@Body('title') artTitle: …Run Code Online (Sandbox Code Playgroud) nestjs ×1