From e8dc9cf091fde2fbb3bc353b1c9ea32bd11bf03c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Mon, 19 Aug 2024 13:12:33 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86swagger=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 11 +++-
.../config/SpringFoxSwaggerHostResolver.java | 59 +++++++++++++++++++
.../security/JwtAuthenticationFilter.java | 3 +-
3 files changed, 70 insertions(+), 3 deletions(-)
create mode 100644 src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java
diff --git a/pom.xml b/pom.xml
index 7b35aaf..5d6dd1c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.gxwebsoft
com-gxwebsoft-server
- 2.0
+ 1.5.2
com-gxwebsoft-api
WebSoftApi project for Spring Boot
@@ -291,6 +291,15 @@
1.0.0.14
+
+
+ com.github.xiaoymin
+ knife4j-spring-boot-starter
+ 3.0.3
+
+
+
+
diff --git a/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java b/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java
new file mode 100644
index 0000000..25e6f78
--- /dev/null
+++ b/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java
@@ -0,0 +1,59 @@
+package com.gxwebsoft.common.core.config;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.servers.Server;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import springfox.documentation.oas.web.OpenApiTransformationContext;
+import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter;
+import springfox.documentation.spi.DocumentationType;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+public class SpringFoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter {
+ @Override
+ public OpenAPI transform(OpenApiTransformationContext context) {
+
+ HttpServletRequest request = context.request().get();
+
+ OpenAPI swagger = context.getSpecification();
+
+ String scheme = "http";
+ String referer = request.getHeader("Referer");
+
+ if(StringUtils.hasLength(referer)){
+ //获取协议
+ scheme = referer.split(":")[0];
+ }
+
+ List servers = new ArrayList<>();
+ String finalScheme = scheme;
+ //重新组装server信息
+ swagger.getServers().forEach(item->{
+
+ //替换协议,去掉默认端口
+ item.setUrl(clearDefaultPort(item.getUrl().replace("http", finalScheme)));
+ servers.add(item);
+ });
+ swagger.setServers(servers);
+ return swagger;
+ }
+
+ //清除默认端口
+ private String clearDefaultPort(String url){
+
+ String port = url.split(":")[2];
+ if("80".equals(port)||"443".equals(port)){
+ return url.replace(":80","").replace(":443","");
+ }
+ return url;
+ }
+
+ @Override
+ public boolean supports(DocumentationType documentationType) {
+ return documentationType.equals(DocumentationType.OAS_30);
+ }
+}
diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java
index 4ad87c8..105fc28 100644
--- a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java
+++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java
@@ -60,8 +60,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
final SignCheckUtil checkUtil = new SignCheckUtil();
String key = "WhiteDomain:" + jwtSubject.getTenantId();
List whiteDomains = redisUtil.get(key, List.class);
- System.out.println("request.getServerName() = " + request.getServerName());
- if (!checkUtil.checkWhiteDomains(whiteDomains, request.getServerName()) && !"localhost".equals(request.getServerName())) {
+ if (!checkUtil.checkWhiteDomains(whiteDomains, request.getServerName()) && !"localhost".equals(request.getServerName()) && !"server.gxwebsoft.com".equals(request.getServerName())) {
throw new UsernameNotFoundException("The requested domain name is not on the whitelist");
}