gpt4 book ai didi

nestjs - 如何为 Nest.js 中的特定模块提供 Guard?

转载 作者:行者123 更新时间:2023-12-03 16:23:31 26 4
gpt4 key购买 nike

我有一个名为 AdminModule 的模块应受 AdminGuard 保护.
我尝试直接在模块中设置 Guard,如下所示:

@Module({
imports: [
HttpModule,
],
controllers: [AdminController],
providers: [
{
provide: APP_GUARD,
useClass: AdminGuard,
},
AdminService,
],
})
export class AdminModule {
}
但是,守卫不仅限于此模块,而是全局的(如文档中所述: "the guard is, in fact, global")。
但是怎么可能让守卫只保护一个模块呢?

最佳答案

更新:实际上没有办法实现这一点。
信息 :
您使用 APP_GUARD 所做的事情是在全局范围内应用它。与使用 useGlobalGuards 相同,但这种方式可以让您利用 DI 系统。

{
provide: APP_GUARD,
useClass: AdminGuard,
},
如果您不想全局应用它,请不要将其添加到模块中提供程序的数组中。
相反,只需像这样创建一个新守卫
@Injectable()
export class RolesGuard implements CanActivate {
canActivate(
context: ExecutionContext,
): boolean | Promise<boolean> | Observable<boolean> {
return true;
}
}
请参阅此处的文档: https://docs.nestjs.com/guards
然后在类级别将其应用于您的 Controller ,以影响 Controller 的所有处理程序,或应用于影响特定端点的方法。
@UseGuards(RolesGuard)

关于nestjs - 如何为 Nest.js 中的特定模块提供 Guard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56397944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com