gpt4 book ai didi

nestjs - 将一个 Guard 应用于 Nestjs 中的多个路由

转载 作者:行者123 更新时间:2023-12-04 21:16:39 26 4
gpt4 key购买 nike

例如:要将一个中间件应用于多个路由,我们可以使用:

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 到多条路线,¿ 最佳做法是什么?谢谢 ...

目前我在这样的 Controller 功能中使用了一个一个的装饰器,
@Get()
@UseGuards(AuthGuard('jwt'))
async findAll(@Request() request): Promise<User[]> {
return await this.usersService.findAll();
}

但我正在寻找一个大规模的实现

最佳答案

您有三种可能的解决方案来设置 guard :

  • 适用于方法(您的示例)
  • 适用于 Controller
  • 全局适用

  • 适用于 Controller :
    @Controller('cats')
    @UseGuards(RolesGuard)
    export class CatsController {}

    全局应用保护:
    const app = await NestFactory.create(ApplicationModule);
    app.useGlobalGuards(new RolesGuard());

    来自守卫文档的所有示例 - https://docs.nestjs.com/guards

    关于nestjs - 将一个 Guard 应用于 Nestjs 中的多个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595647/

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