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"); }