创建守卫目录
nest g guard guard/auth
创建自定义的守卫
守卫如果没有通过会报403,表示没有权限
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';import { Observable } from 'rxjs';@Injectable()export class AuthGuard implements CanActivate {canActivate(context: ExecutionContext,): boolean | Promise<boolean> | Observable<boolean> {// console.log(context);console.log( );// 守卫请求const req = context.switchToHttp().getRequest();// 获取头 传入想要的值const authorization = req.header('authorization')if(authorization){return true;}return false;}}
单独接口守卫
import { Controller, Get ,UseGuards} from '@nestjs/common';// 引入自定义的守卫import {AuthGuard} from '../guard/auth.guard'export class AutjController {@Get()@UseGuards(AuthGuard) // 配置独立接口守卫index(){return '前端伪大叔'}}
整个文件守卫
import { Controller, Get ,UseGuards} from '@nestjs/common';// 引入自定义的守卫import {AuthGuard} from '../guard/auth.guard'@Controller('autj')@UseGuards(AuthGuard) // 配置全部方法 - 守卫export class AutjController {@Get()index(){return '前端伪大叔'}}
配置全局守卫
需要在mian.ts中配置全局守卫
import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';// 守卫import {AuthGuard}from './guard/auth.guard'async function bootstrap() {const app = await NestFactory.create<NestExpressApplication>(AppModule);app.useGlobalGuards(new AuthGuard()) // 配置全局守卫await app.listen(3000);}bootstrap();
