【问题标题】:Authorization Header not getting displayed in CURL springdoc-openapi-ui授权标头未显示在 CURL springdoc-openapi-ui 中
【发布时间】:2020-09-24 05:35:18
【问题描述】:

我正在使用springdoc-openapi-ui。我已经配置了名为Authorization 的全局头文件。 当我执行 API Authorization 时,请求的 CURL 中没有显示。除了Authorization,我的其他参数都显示在 CURL 中。

以前,我使用的是springfox-swagger-ui,当时它显示在 CURL 部分。

我已经搜索过相同的内容,并在https://swagger.io/docs/specification/describing-parameters/#header-parameters 上找到了注释 Note: Header parameters named Accept, Content-Type and Authorization are not allowed.

但我要求仅使用 Authorization 作为标题。我们有什么办法可以做到这一点?

下面添加了我的SwaggerConfiguration

@Configuration
public class SwaggerConfiguration {

    @Value("${title:title}")
    private String title;
    @Value("${description:description.}")
    private String description;
    @Value("${version:0.0.1}")
    private String version;

    @Value("${schemeId}")
    String schemeIdentifier;

    @Bean
    public OperationCustomizer customGlobalHeaders() {

        return (Operation operation, HandlerMethod handlerMethod) -> {

            Parameter authorization = new Parameter().in(ParameterIn.HEADER.toString()).name("Authorization")
                    .description("Authorization details JWT token")
                    .schema(new StringSchema()).required(true);

            Parameter applicationId = new Parameter().in(ParameterIn.HEADER.toString()).schema(new StringSchema())
                    .name("Application-Id").description("Originating application or client using the service")
                    .required(false);

            operation.addParametersItem(authorization);
            operation.addParametersItem(applicationId);

            return operation;
        };
    }

    @Bean
    public GroupedOpenApi adminApi() {      

        String[] packagesToscan = { "abc.controller" };

        return GroupedOpenApi.builder().setGroup("Client").packagesToScan(packagesToscan).build();
    }

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI().info(new Info().title(title).version(version).description(description))
                .components(new Components());
    }
}

【问题讨论】:

  • 您需要使用会生成 securitySchemes + security(如果您使用 OpenAPI 3.0)或 securityDefinitions + security(在 OpenAPI 2.0 中)的注释 - 这就是 Authorization标头已定义。
  • 感谢您的宝贵时间。我明白你的意思了。我有 300 多个 https 方法,因此对于每个方法我都需要使用注释,这非常耗时。如果有的话,我正在寻找通用解决方案。

标签: java spring-boot spring-security swagger-ui springdoc-openapi-ui


【解决方案1】:

我已经搜索过相同的答案。
我们不能将授权设置为带有springdoc open api 的标题。如果我们想使用,那么我们需要启用swagger ui上的授权按钮。

然后它将显示在 CURL 部分,如下所示。

在 glabal 位置启用 swagger 上的授权按钮

@Configuration
public class SwaggerConfiguration {

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI().info(new 
             Info().title("title").version("version").description("description"))
                .addSecurityItem(new SecurityRequirement().addList("my security"))
                .components(new Components().addSecuritySchemes("my security",
                        new SecurityScheme().name("my 
                 security").type(SecurityScheme.Type.HTTP).scheme("bearer")));
    }
}

【讨论】:

    猜你喜欢
    • 2020-11-07
    • 2020-09-17
    • 2020-05-10
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多