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