You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:48:30