例如:将一个中间件应用于我们可以使用的多个路由:
export class UserModule {
public configure(consumer: MiddlewaresConsumer) {
consumer.apply(AuthMiddleware).forRoutes(
{ path: '/users', method: RequestMethod.GET },
{ path: '/users/:id', method: RequestMethod.GET },
{ path: '/users/:id', method: RequestMethod.PUT },
{ path: '/users/:id', method: RequestMethod.DELETE },
);
}
}
我想将 AuthGuard 应用于多条路线,¿什么是最佳做法?谢谢...
Currenly我在控制器功能中使用逐个装饰器,如下所示,
@Get()
@UseGuards(AuthGuard('jwt'))
async findAll(@Request() request): Promise<User[]> {
return await this.usersService.findAll();
}
但我正在寻找一个实用的实现
答案 0 :(得分:2)
你有三种可能的解决方案来保护:
申请控制器:
@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}
全球申请警卫:
const app = await NestFactory.create(ApplicationModule);
app.useGlobalGuards(new RolesGuard());
来自警卫文档的所有示例 - https://docs.nestjs.com/guards