From 81eee14d5d4466502637d766b7b938c434ef02b6 Mon Sep 17 00:00:00 2001 From: Jeremy Yin Date: Wed, 19 Jun 2019 22:10:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E6=8E=A7=E5=88=B6=E5=99=A8=E9=87=8C?= =?UTF-8?q?=E9=9D=A2=E5=8F=AF=E4=BB=A5=E9=99=84=E5=8A=A0metadata=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E5=AE=88=E5=8D=AB=E9=87=8C=E9=9D=A2=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E9=80=9A=E8=BF=87reflector=E6=9D=A5=E8=8E=B7=E5=8F=96=E5=88=B0?= =?UTF-8?q?=E5=AF=B9=E5=BA=94handler=E7=9A=84metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/guards/demo-roles.guard.ts | 8 ++++++++ src/modules/posts/posts.controller.ts | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) 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('没有权限!')