diff --git a/src/core/guards/demo-roles.guard.ts b/src/core/guards/demo-roles.guard.ts index 7314792..9f4ead8 100644 --- a/src/core/guards/demo-roles.guard.ts +++ b/src/core/guards/demo-roles.guard.ts @@ -1,11 +1,19 @@ import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { Observable } from 'rxjs'; +import { Reflector } from '@nestjs/core'; @Injectable() export class DemoRolesGuard implements CanActivate { + constructor(private readonly reflector: Reflector) {} + canActivate( context: ExecutionContext, ): boolean | Promise | Observable { + console.log('handler:', context.getHandler()); + console.log('class:', context.getClass()); + + const roles = this.reflector.get('roles', context.getHandler()) + console.log(roles) return false; } } diff --git a/src/modules/posts/posts.controller.ts b/src/modules/posts/posts.controller.ts index 24a4871..db1f11b 100644 --- a/src/modules/posts/posts.controller.ts +++ b/src/modules/posts/posts.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Post, Req, Query, Headers, Param, Body, HttpException, HttpStatus, ForbiddenException, UseFilters, UsePipes, ValidationPipe, ParseIntPipe, UseGuards } from '@nestjs/common'; +import { Controller, Get, Post, Req, Query, Headers, Param, Body, HttpException, HttpStatus, ForbiddenException, UseFilters, UsePipes, ValidationPipe, ParseIntPipe, UseGuards, SetMetadata } from '@nestjs/common'; import { CreatePostDto } from './post.dto'; import { DemoService } from './providers/demo/demo.service' import { DemoFilter } from '../../core/filters/demo.filter' @@ -29,6 +29,7 @@ export class PostsController { @Post() // @UseFilters(DemoFilter) @UsePipes(ValidationPipe) + @SetMetadata('roles', ['member', 89]) store(@Body() post: CreatePostDto) { // throw new HttpException('没有权限!', HttpStatus.FORBIDDEN) // throw new ForbiddenException('没有权限!')