创建守卫目录
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();