将一个 Guard 应用于 Nestjs 中的多个路由
Apply one Guard to multiple routes in Nestjs
例如:将一个中间件应用于多个路由我们可以使用:
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 应用到多个路由,¿ 最佳做法是什么?谢谢...
目前我像这样在控制器函数中使用一个一个的装饰器,
@Get()
@UseGuards(AuthGuard('jwt'))
async findAll(@Request() request): Promise<User[]> {
return await this.usersService.findAll();
}
但我正在寻找大规模实施
你有三种可能的设置守卫方案:
- 应用于方法(您的示例)
- 申请控制器
- 全球适用
应用于控制器:
@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}
全局应用防护:
const app = await NestFactory.create(ApplicationModule);
app.useGlobalGuards(new RolesGuard());
守卫文档中的所有示例 - https://docs.nestjs.com/guards
例如:将一个中间件应用于多个路由我们可以使用:
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 应用到多个路由,¿ 最佳做法是什么?谢谢...
目前我像这样在控制器函数中使用一个一个的装饰器,
@Get()
@UseGuards(AuthGuard('jwt'))
async findAll(@Request() request): Promise<User[]> {
return await this.usersService.findAll();
}
但我正在寻找大规模实施
你有三种可能的设置守卫方案:
- 应用于方法(您的示例)
- 申请控制器
- 全球适用
应用于控制器:
@Controller('cats')
@UseGuards(RolesGuard)
export class CatsController {}
全局应用防护:
const app = await NestFactory.create(ApplicationModule);
app.useGlobalGuards(new RolesGuard());
守卫文档中的所有示例 - https://docs.nestjs.com/guards