在控制器里面可以附加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 { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
import { Reflector } from '@nestjs/core';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DemoRolesGuard implements CanActivate {
|
export class DemoRolesGuard implements CanActivate {
|
||||||
|
constructor(private readonly reflector: Reflector) {}
|
||||||
|
|
||||||
canActivate(
|
canActivate(
|
||||||
context: ExecutionContext,
|
context: ExecutionContext,
|
||||||
): boolean | Promise<boolean> | Observable<boolean> {
|
): 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;
|
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 { CreatePostDto } from './post.dto';
|
||||||
import { DemoService } from './providers/demo/demo.service'
|
import { DemoService } from './providers/demo/demo.service'
|
||||||
import { DemoFilter } from '../../core/filters/demo.filter'
|
import { DemoFilter } from '../../core/filters/demo.filter'
|
||||||
|
@ -29,6 +29,7 @@ export class PostsController {
|
||||||
@Post()
|
@Post()
|
||||||
// @UseFilters(DemoFilter)
|
// @UseFilters(DemoFilter)
|
||||||
@UsePipes(ValidationPipe)
|
@UsePipes(ValidationPipe)
|
||||||
|
@SetMetadata('roles', ['member', 89])
|
||||||
store(@Body() post: CreatePostDto) {
|
store(@Body() post: CreatePostDto) {
|
||||||
// throw new HttpException('没有权限!', HttpStatus.FORBIDDEN)
|
// throw new HttpException('没有权限!', HttpStatus.FORBIDDEN)
|
||||||
// throw new ForbiddenException('没有权限!')
|
// throw new ForbiddenException('没有权限!')
|
||||||
|
|
Loading…
Reference in New Issue