From 8722e184d6d7219645310804624aa14543615604 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Tue, 08 Jun 2021 20:03:37 +0800
Subject: [PATCH] 升级swagger到最新版本v3.0.0
---
ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java | 93 ++++++++++++++++++++++------------------------
1 files changed, 45 insertions(+), 48 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
index 204c2c8..39e9b3a 100644
--- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
+++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java
@@ -2,27 +2,25 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
+import java.util.function.Predicate;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.Contact;
-import springfox.documentation.service.GrantType;
-import springfox.documentation.service.OAuth;
-import springfox.documentation.service.ResourceOwnerPasswordCredentialsGrant;
import springfox.documentation.service.SecurityReference;
+import springfox.documentation.service.SecurityScheme;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@@ -63,57 +61,57 @@
{
swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
}
+
List<Predicate<String>> excludePath = new ArrayList<>();
swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
- //noinspection Guava
- return new Docket(DocumentationType.SWAGGER_2)
- .host(swaggerProperties.getHost())
+ ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
.apiInfo(apiInfo(swaggerProperties)).select()
- .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
- .paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath)))
- .build()
- .securitySchemes(Collections.singletonList(securitySchema()))
- .securityContexts(Collections.singletonList(securityContext()))
- .pathMapping("/");
+ .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()));
+
+ swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p)));
+ swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate()));
+
+ return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");
}
- /**
- * 配置默认的全局鉴权策略的开关,通过正则表达式进行匹配;默认匹配所有URL
- *
- * @return
- */
- private SecurityContext securityContext()
+ /**
+ * 安全模式,这里指定token通过Authorization头请求头传递
+ */
+ private List<SecurityScheme> securitySchemes()
{
- return SecurityContext.builder()
- .securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex(swaggerProperties().getAuthorization().getAuthRegex()))
- .build();
+ List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
+ apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
+ return apiKeyList;
}
- /**
- * 默认的全局鉴权策略
- *
- * @return
- */
+ /**
+ * 安全上下文
+ */
+ private List<SecurityContext> securityContexts()
+ {
+ List<SecurityContext> securityContexts = new ArrayList<>();
+ securityContexts.add(
+ SecurityContext.builder()
+ .securityReferences(defaultAuth())
+ .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
+ .build());
+ return securityContexts;
+ }
+
+ /**
+ * 默认的全局鉴权策略
+ *
+ * @return
+ */
private List<SecurityReference> defaultAuth()
{
- ArrayList<AuthorizationScope> authorizationScopeList = new ArrayList<>();
- swaggerProperties().getAuthorization().getAuthorizationScopeList().forEach(authorizationScope -> authorizationScopeList.add(new AuthorizationScope(authorizationScope.getScope(), authorizationScope.getDescription())));
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[authorizationScopeList.size()];
- return Collections.singletonList(SecurityReference.builder()
- .reference(swaggerProperties().getAuthorization().getName())
- .scopes(authorizationScopeList.toArray(authorizationScopes))
- .build());
- }
-
- private OAuth securitySchema()
- {
- ArrayList<AuthorizationScope> authorizationScopeList = new ArrayList<>();
- swaggerProperties().getAuthorization().getAuthorizationScopeList().forEach(authorizationScope -> authorizationScopeList.add(new AuthorizationScope(authorizationScope.getScope(), authorizationScope.getDescription())));
- ArrayList<GrantType> grantTypes = new ArrayList<>();
- swaggerProperties().getAuthorization().getTokenUrlList().forEach(tokenUrl -> grantTypes.add(new ResourceOwnerPasswordCredentialsGrant(tokenUrl)));
- return new OAuth(swaggerProperties().getAuthorization().getName(), authorizationScopeList, grantTypes);
+ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+ authorizationScopes[0] = authorizationScope;
+ List<SecurityReference> securityReferences = new ArrayList<>();
+ securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
+ return securityReferences;
}
private ApiInfo apiInfo(SwaggerProperties swaggerProperties)
@@ -128,5 +126,4 @@
.version(swaggerProperties.getVersion())
.build();
}
- }
-
+}
--
Gitblit v1.9.3