@Configuration
public class SwaggerConfiguration {
@Bean
public OpenAPI customOpenAPI(@Value("${project.version}") String appVersion) {
OpenAPI openApi = new OpenAPI();
openApi.info(
new Info()
.title("Title Example")
.version(appVersion)
.description("Swagger server created using springdocs - a library for OpenAPI 3 with spring boot.")
);
openApi.components(
new Components().addSecuritySchemes("bearer-jwt",
new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer").bearerFormat("JWT")
.in(SecurityScheme.In.HEADER).name("Authorization"))
);
openApi.addSecurityItem(
new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write"))
);
return openApi;
}
}
8条答案
按热度按时间ars1skjm1#
@ApiImplicitParams
和@ApiImplicitParam
应该可以做到这一点:来自文档:
您可能希望手动描述操作参数。这可能是由于各种原因,例如:
Swagger UI将更新,以便您可以从那里发送令牌。不需要更改HTML。
@ApiImplicitParam
是不够的(即使只有一个参数)。另外,您还需要添加@ApiImplicitParams
。o75abkj42#
我配置2.9.2 Swagger版本在Swagger界面添加Authorization并发送Bearer token
t98cgbkg3#
另一个选项是添加
globalOperationParameters
。它将在每个端点中添加一个用于授权的字段。定义授权标头参数:
将其添加到
Docket
配置中:它看起来像这样:
vc9ivgsu4#
有一种方法可以使用responseInterceptor和requestInterceptor
首先使用
responseInterceptor
捕获第一个API调用的响应并保存令牌(在本例中保存在本地存储中),然后使用requestInterceptor
将Authorization
标头与保存的令牌一起添加。kognpnkq5#
我相信你必须定制swagger index page来实现这一点。
您可以隐藏输入'input_apiKey',并添加两个用户名和密码输入。然后,您进行一个 AJAX 调用,用您的令牌更新隐藏的输入。
qnyhuwrf6#
这是一个老问题,但这是我最近在2.7.0版本中为我的JWT令牌解决它的方法
在swagger配置中,添加
SecurityConfiguration
bean。重要部分是保留第五个参数为空或空。将
securitySchemes(Lists.newArrayList(apiKey()))
添加到主Docket
bean中。然后在UI中,需要点击Authorize按钮,输入“Bearer access_token”(用于Authorization文本框),其中access_token是jWT token服务器提供的令牌。
保存此授权后,将对所有端点生效。为每个端点添加单独的文本字段看起来非常麻烦。
uajslkp67#
使用带有springdoc-openapi-maven-plugin的SpringDoc,我的选择是使用SwaggerConfig.Java:
lnxxn5zx8#
使用Swagger UI 4,我通过配置
persistAuthorization
和requestInterceptor
Swagger UI配置参数完成了这一点:1.将
persistAuthorization
设置为true
使其将授权数据存储在浏览器的localStorage
中1.添加一个
requestInterceptor
JS函数,修改请求以沿着accept_token
。下面是我的requestInterceptor函数: