英文:
Cannot send Authorization token from Swagger-UI using Springfox 2.9.2
问题
在Swagger UI中,我想要将授权令牌添加到请求头中。
我几乎查看了这里和其他网站上的每篇帖子。仍然无法按预期工作。我尝试了不同的解决方案,但没有任何改变。
根据这个官方Spring问题,我目前的实现如下:
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。
英文:
In swagger-ui, I want to add authorization token to request header.
I almost looked at every post in here and other sites. Still cannot make it work as expected. I tried different solutions but nothing changed.
My current implementation according to 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>
Result is always the same:
some solutions, has been pointed out working, I tried:
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.
答案1
得分: 0
你可以使用以下示例中的 ParameterBuilder
将 Authorization
头设置为 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;
}
}
英文:
You can set Authorization
header to docket
using ParameterBuilder
as shown below
@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;
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论