我有一个名为AdminModule
的模块,该模块应受AdminGuard
保护。
我试图像这样直接在模块中设置Guard:
@Module({
imports: [
HttpModule,
],
controllers: [AdminController],
providers: [
{
provide: APP_GUARD,
useClass: AdminGuard,
},
AdminService,
],
})
export class AdminModule {
}
但是,警卫队不仅限于此模块,而是全局的(如文档中所述:“警卫队实际上是全局的”)。
但是如何使防护装置仅保护模块?
答案 0 :(得分:0)
使用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;
}
}
在此处查看文档:{{3}}
然后将其应用于类级别的控制器上,以影响控制器的所有处理程序
@UseGuards(RolesGuard)
希望对您有帮助