在控制器里面可以附加metadata,在守卫里面可以通过reflector来获取到对应handler的metadata
This commit is contained in:
parent
8bb51034c7
commit
81eee14d5d
|
@ -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<boolean> | Observable<boolean> {
|
||||
console.log('handler:', context.getHandler());
|
||||
console.log('class:', context.getClass());
|
||||
|
||||
const roles = this.reflector.get<string[]>('roles', context.getHandler())
|
||||
console.log(roles)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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('没有权限!')
|
||||
|
|
Loading…
Reference in New Issue