nestjs 只在某一模块设置全局守卫 而不是所有路由
时间: 2024-03-27 19:39:44 浏览: 105
nestjs-config:nestjs配置模块
如果你只想在 NestJS 中的某个模块中使用全局守卫,而不是在所有路由中使用,可以将守卫提供者的范围限定在该模块中。
例如,我们只想在 `UsersModule` 中使用全局守卫,可以在 `UsersModule` 中定义守卫的提供者,如下所示:
```typescript
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';
import { AuthGuard } from './auth.guard';
import { UsersController } from './users.controller';
@Module({
controllers: [UsersController],
providers: [
{
provide: APP_GUARD,
useClass: AuthGuard,
},
],
})
export class UsersModule {}
```
在上面的示例中,我们在 `UsersModule` 中定义了一个名为 `AuthGuard` 的守卫,并将其作为 `APP_GUARD` 的提供者注入到了该模块中。这样,`AuthGuard` 就只会在 `UsersModule` 中生效。
需要注意的是,在上面的示例中,我们只在 `UsersModule` 中定义了一个控制器 `UsersController`,但是你可以在该模块中定义任意数量的控制器,`AuthGuard` 都会对其生效。
如果你想在多个模块中使用同一个全局守卫,你可以将守卫提供者定义在一个共享模块中,并将其导入到需要使用守卫的模块中。这样,所有导入了该共享模块的模块都会使用该守卫。
阅读全文