如何解决Swagger + spring boot + jwt + 如何禁用特定 API 的授权按钮
我已在 Spring Boot 应用程序中配置了 JWT Bearer 令牌身份验证。我有“身份验证”和“你好”控制器,其中“你好”控制器将承载令牌作为授权标头。 “身份验证”api 生成不记名令牌。邮递员一切正常。但是从招摇方面来看,我无法禁用“身份验证”api 的“授权”按钮。 swagger screen clip
这里我的代码看起来像: SwaggerConfig 文件:
@Bean
public Docket swaggerSpringfoxDocket() {
Contact contact = new Contact(
"shivaraj","https://shivaraj.co","bmxxxxx@xxxx.com");
List<VendorExtension> vext = new ArrayList<>();
ApiInfo apiInfo = new ApiInfo(
"Backend API","description","1.0.0",contact,"MIT",vext);
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.pathMapping("/")
.apiInfo(ApiInfo.DEFAULT)
.forCodeGeneration(true)
.genericModelSubstitutes(ResponseEntity.class)
.ignoredParameterTypes(SpringDataWebProperties.Pageable.class)
.ignoredParameterTypes(java.sql.Date.class)
.directModelSubstitute(java.time.LocalDate.class,java.sql.Date.class)
.directModelSubstitute(java.time.ZonedDateTime.class,Date.class)
.directModelSubstitute(java.time.LocalDateTime.class,Date.class)
.securityContexts(Lists.newArrayList(securityContext()))
.securitySchemes(Lists.newArrayList(apiKey()))
.useDefaultResponseMessages(false);
docket = docket.select()
.paths(regex(DEFAULT_INCLUDE_PATTERN))
.build();
return docket;
}
private ApiKey apiKey() {
return new ApiKey("JWT",AUTHORIZATION_HEADER,"header");
}
private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex(DEFAULT_INCLUDE_PATTERN))
.build();
}
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope
= new AuthorizationScope("global","accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Lists.newArrayList(
new SecurityReference("JWT",authorizationScopes));
}
作为替代方法,有没有一种方法可以为每个单独的控制器大摇大摆地启用授权按钮?
解决方法
将 security = @SecurityRequirement(name = "bearerAuth")
添加到 @Operation
标记允许启用/禁用令牌身份验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。