NestJS如何在模块级别通过APP_GUARD定义多个守卫
NestJS 多全局守卫(APP_GUARD)配置方法
在NestJS中声明多个APP_GUARD级别的全局守卫,不需要在单个provider配置项内追加多个守卫类,直接在providers数组中按顺序添加多个以APP_GUARD为注入令牌的provider条目即可。
实现代码
import { APP_GUARD } from '@nestjs/core'; import { Module } from '@nestjs/common'; import { MyFirstGuard } from './guards/my-first.guard'; import { MySecondGuard } from './guards/my-second.guard'; @Module({ providers: [ { provide: APP_GUARD, useClass: MyFirstGuard, }, // 直接追加第二个、第N个守卫配置即可 { provide: APP_GUARD, useClass: MySecondGuard, }, ], }) export class AppModule {}
注意事项
- 守卫执行顺序和
providers数组中的声明顺序一致,上例中会先执行MyFirstGuard,再执行MySecondGuard - 该方式声明的所有全局守卫都完整支持Nest的依赖注入能力,和单守卫声明的行为完全一致
- 如果守卫存在前后依赖(比如必须先通过身份认证校验,再执行权限校验),请把需要优先执行的守卫放在数组更靠前的位置
内容的提问来源于stack exchange,提问作者Raman
相关产品推荐
相关产品推荐

