【问题标题】:How to disable security for a specific controller method in NestJS/Swagger?如何禁用 NestJS/Swagger 中特定控制器方法的安全性?
【发布时间】:2021-07-22 16:05:29
【问题描述】:

我正在使用带有 Swagger 模块的 NestJS 来生成等效的 API 规范。 有没有办法禁用特定控制器方法的安全性,同时将控制器类标记为需要身份验证? 示例:

// apply bearer auth security to controller
@ApiBearerAuth()
@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  // How can **getHello** method be made public???
  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

与直接的方法相比,我正在寻找一种更直观的方法,其中每个控制器方法都应标记安全性,公共方法除外....

我尝试使用@ApiOperation({ security: [] }) 没有任何结果。它仍然从控制器类中获取安全定义

【问题讨论】:

    标签: authentication methods swagger overriding nestjs


    【解决方案1】:

    @ApiBearerAuth() 支持控制器和功能。您应该将@ApiBearerAuth() 放入您需要的功能中

    // apply bearer auth security to controller
    @Controller()
    export class AppController {
      constructor(private readonly appService: AppService) {}
    
      // How can **getHello** method be made public???
      @Get()
      getHello(): string {
        return this.appService.getHello();
      }
    
      @ApiBearerAuth()  <---- here
      @Post()
      createHello(): string {
        return this.appService.createHello();
      }
    
    }
    

    【讨论】:

    • 正如我在问题中所说,我已经知道特定于方法的方式。我想知道“从类中排除方法”方法是否可行
    【解决方案2】:

    毕竟这似乎已经讨论过了,不会实施:github.com/nestjs/swagger/issues/1319

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 2019-01-20
      • 2018-09-13
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      相关资源
      最近更新 更多