【问题标题】:Cannot send Authorization token from Swagger-UI using Springfox 2.9.2无法使用 Springfox 2.9.2 从 Swagger-UI 发送授权令牌
【发布时间】:2020-08-19 20:29:52
【问题描述】:

在 swagger-ui 中,我想将授权令牌添加到请求标头中。

我几乎查看了这里和其他网站上的每个帖子。仍然无法使其按预期工作。我尝试了不同的解决方案,但没有任何改变。

我目前根据this offical spring issue的实现:

XController.java:

@ApiOperation(
            value = "Yeni Üye Tanımlama Servisi",
            notes = "Platformlar tarafından iletilen üye bilgilerinin kaydedilmesini sağlayan servistir.",
            response = KfsResponse.class
            , authorizations = { @Authorization(value="Authorization") })

SwaggerConfig.java:

 @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(Predicates.or(RequestHandlerSelectors.basePackage("tr.com.mkk.kfs.kfs.web"), RequestHandlerSelectors.basePackage("tr.com.mkk.kfs.kfs.model.infos")))
                .paths(PathSelectors.any()).build()
                .apiInfo(apiEndPointsInfo())
                .securitySchemes(Arrays.asList(apiKey()))
                .securityContexts(Arrays.asList(securityContext));

    }

    private ApiKey apiKey() {
        return new ApiKey("Authorization", "Authorization", "header");
    }

    SecurityReference securityReference = SecurityReference.builder()
            .reference("Authorization")
            .scopes(new AuthorizationScope[0])
            .build();

    SecurityContext securityContext = SecurityContext.builder()
            .securityReferences(Arrays.asList(securityReference))
            .build();

pom.xml:

<springfox.version>2.9.2</springfox.version>

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${springfox.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${springfox.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-bean-validators</artifactId>
            <version>${springfox.version}</version>
        </dependency>

结果总是一样的:

一些解决方案,已经指出工作,我试过了:

https://github.com/springfox/springfox/issues/2661, https://github.com/springfox/springfox/issues/2194, https://stackoverflow.com/a/58720077/7831244, https://stackoverflow.com/a/52868853/7831244.

【问题讨论】:

    标签: java spring-boot swagger swagger-ui springfox


    【解决方案1】:

    您可以使用ParameterBuilderAuthorization 标头设置为docket,如下所示

    @Configuration
    @EnableSwagger2
    public class SwaggerConfiguration {
    
        @Value("${title:title}")
        private String title;
        @Value("${description:description")
        private String description;
        @Value("${version:0.0.1}")
        private String version;
    
        ApiInfo apiInfo() {
            return new ApiInfoBuilder().title(title).description(description).version(version).build();
        }
    
        @Bean
    public Docket api() {
    
            Docket docket;
    
            docket = new Docket(DocumentationType.SWAGGER_2).select()
                    .apis(RequestHandlerSelectors.basePackage("com.controller")).paths(PathSelectors.any()).build()
                    .apiInfo(apiInfo());
    
    
            docket.globalOperationParameters(
                    Arrays.asList(
                    new ParameterBuilder().name("Authorization")
                            .description("Authorization details for security (JWT token or BasicAuth)")
                            .modelRef(new ModelRef("String")).parameterType("header").required(false).build()));  
    
            return docket;
        }
    }
    

    【讨论】:

    • 我在应用中使用的方式和上面提到的一样
    • 如果您删除 .securitySchemes(Arrays.asList(apiKey())) 行,“Autorize”按钮将从 UI 中消失。你如何将你的令牌输入到标题中?
    • 好的,明白了,它不会为您提供 Autorize 按钮,但会为 JWT 令牌提供一个占位符作为标题中的授权
    • UI 中没有显示任何内容。是不是必须要提供授权值的输入字段?
    • 如果可能的话,你能否用整个代码更新你的 SwaggerConfig.java
    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2019-05-11
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多