diff --git a/pigx-common/pigx-common-swagger/pom.xml b/pigx-common/pigx-common-swagger/pom.xml
index 7290ca503..276ab4228 100644
--- a/pigx-common/pigx-common-swagger/pom.xml
+++ b/pigx-common/pigx-common-swagger/pom.xml
@@ -34,17 +34,44 @@
-
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
io.springfox
springfox-swagger2
${swagger.fox.version}
+
+ io.springfox
+ springfox-oas
+ ${swagger.fox.version}
+
+
+ com.github.xiaoymin
+ knife4j-spring-ui
+ ${knife4j.version}
+
com.github.xiaoymin
knife4j-micro-spring-boot-starter
${knife4j.version}
+
+
+ org.springframework
+ spring-webflux
+ provided
+
+
+
+ org.springframework.cloud
+ spring-cloud-gateway-core
+ provided
+
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/annotation/EnablePigxSwagger2.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/annotation/EnablePigxSwagger2.java
index ed708ac7d..b659e43ce 100644
--- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/annotation/EnablePigxSwagger2.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/annotation/EnablePigxSwagger2.java
@@ -17,20 +17,23 @@
package com.pig4cloud.pigx.common.swagger.annotation;
+import com.pig4cloud.pigx.common.swagger.config.GatewaySwaggerAutoConfiguration;
import com.pig4cloud.pigx.common.swagger.config.SwaggerAutoConfiguration;
import org.springframework.context.annotation.Import;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.lang.annotation.*;
/**
* @author lengleng
- * @date 2018/7/21 开启pigx swagger
+ * @date 2020/10/2 开启pigx swagger
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
-@Import({ SwaggerAutoConfiguration.class })
+@EnableSwagger2
+@Import({ SwaggerAutoConfiguration.class, GatewaySwaggerAutoConfiguration.class })
public @interface EnablePigxSwagger2 {
}
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/GatewaySwaggerAutoConfiguration.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/GatewaySwaggerAutoConfiguration.java
new file mode 100644
index 000000000..5c5d026bc
--- /dev/null
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/GatewaySwaggerAutoConfiguration.java
@@ -0,0 +1,48 @@
+package com.pig4cloud.pigx.common.swagger.config;
+
+import com.pig4cloud.pigx.common.swagger.support.SwaggerResourceHandler;
+import com.pig4cloud.pigx.common.swagger.support.SwaggerSecurityHandler;
+import com.pig4cloud.pigx.common.swagger.support.SwaggerUiHandler;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.http.MediaType;
+import org.springframework.web.reactive.function.server.RequestPredicates;
+import org.springframework.web.reactive.function.server.RouterFunction;
+import org.springframework.web.reactive.function.server.RouterFunctions;
+
+/**
+ * @author lengleng
+ * @date 2020/10/2
+ *
+ * 网关swagger 配置类,仅在webflux 环境生效哦
+ */
+@RequiredArgsConstructor
+@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
+@ComponentScan("com.pig4cloud.pigx.common.swagger.support")
+public class GatewaySwaggerAutoConfiguration {
+
+ private final SwaggerResourceHandler swaggerResourceHandler;
+
+ private final SwaggerSecurityHandler swaggerSecurityHandler;
+
+ private final SwaggerUiHandler swaggerUiHandler;
+
+ @Bean
+ public WebFluxSwaggerConfiguration fluxSwaggerConfiguration() {
+ return new WebFluxSwaggerConfiguration();
+ }
+
+ @Bean
+ public RouterFunction swaggerRouterFunction() {
+ return RouterFunctions
+ .route(RequestPredicates.GET("/swagger-resources").and(RequestPredicates.accept(MediaType.ALL)),
+ swaggerResourceHandler)
+ .andRoute(RequestPredicates.GET("/swagger-resources/configuration/ui")
+ .and(RequestPredicates.accept(MediaType.ALL)), swaggerUiHandler)
+ .andRoute(RequestPredicates.GET("/swagger-resources/configuration/security")
+ .and(RequestPredicates.accept(MediaType.ALL)), swaggerSecurityHandler);
+ }
+
+}
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerAutoConfiguration.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerAutoConfiguration.java
index 0558d7699..0b88ea39d 100644
--- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerAutoConfiguration.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerAutoConfiguration.java
@@ -16,28 +16,27 @@
*/
package com.pig4cloud.pigx.common.swagger.config;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
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 springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
+import springfox.documentation.builders.RequestParameterBuilder;
+import springfox.documentation.schema.ScalarType;
import springfox.documentation.service.*;
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;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.function.Predicate;
/**
* @author lengleng swagger配置 禁用方法1:使用注解@Profile({"dev","test"})
@@ -45,7 +44,6 @@ import java.util.List;
* havingValue = "true") 然后在测试配置或者开发配置中添加swagger.enable=true即可开启,生产环境不填则默认关闭Swagger.
*/
@Configuration
-@EnableSwagger2
@EnableAutoConfiguration
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
public class SwaggerAutoConfiguration {
@@ -69,9 +67,6 @@ public class SwaggerAutoConfiguration {
if (swaggerProperties.getBasePath().isEmpty()) {
swaggerProperties.getBasePath().add(BASE_PATH);
}
- // noinspection unchecked
- List> basePath = new ArrayList();
- swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path)));
// exclude-path处理
if (swaggerProperties.getExcludePath().isEmpty()) {
@@ -81,18 +76,22 @@ public class SwaggerAutoConfiguration {
swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
// 版本请求头处理
- ParameterBuilder versionPar = new ParameterBuilder();
- List pars = new ArrayList<>();
- versionPar.name("VERSION").description("灰度路由版本信息").modelRef(new ModelRef("string")).parameterType("header")
- .required(false).build();
+ List pars = new ArrayList<>();
+
+ RequestParameterBuilder versionPar = new RequestParameterBuilder().description("灰度路由版本信息")
+ .in(ParameterType.HEADER).name("VERSION").required(false)
+ .query(param -> param.model(model -> model.scalarModel(ScalarType.STRING)));
+
pars.add(versionPar.build());
- // noinspection Guava
- return new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
- .apiInfo(apiInfo(swaggerProperties)).globalOperationParameters(pars).select()
- .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
- .paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath))).build()
- .securitySchemes(Collections.singletonList(securitySchema()))
+ ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
+ .apiInfo(apiInfo(swaggerProperties)).globalRequestParameters(pars).select()
+ .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(Collections.singletonList(securitySchema()))
.securityContexts(Collections.singletonList(securityContext())).pathMapping("/");
}
@@ -101,8 +100,7 @@ public class SwaggerAutoConfiguration {
* @return
*/
private SecurityContext securityContext() {
- return SecurityContext.builder().securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex(swaggerProperties().getAuthorization().getAuthRegex())).build();
+ return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
/**
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerProperties.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerProperties.java
index a9ef3dd1e..8e871f47c 100644
--- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerProperties.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerProperties.java
@@ -53,6 +53,11 @@ public class SwaggerProperties {
**/
private List excludePath = new ArrayList<>();
+ /**
+ * 需要排除的服务
+ */
+ private List ignoreProviders = new ArrayList<>();
+
/**
* 标题
**/
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/WebFluxSwaggerConfiguration.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/WebFluxSwaggerConfiguration.java
new file mode 100644
index 000000000..3ab96aa47
--- /dev/null
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/WebFluxSwaggerConfiguration.java
@@ -0,0 +1,21 @@
+package com.pig4cloud.pigx.common.swagger.config;
+
+import org.springframework.web.reactive.config.ResourceHandlerRegistry;
+import org.springframework.web.reactive.config.WebFluxConfigurer;
+
+/**
+ * @author lengleng
+ * @date 2020/10/2
+ *
+ * webflux 网关 swagger 资源路径配置
+ */
+public class WebFluxSwaggerConfiguration implements WebFluxConfigurer {
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/swagger-ui/**")
+ .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
+ .resourceChain(false);
+ }
+
+}
\ No newline at end of file
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/SwaggerProvider.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
similarity index 89%
rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/SwaggerProvider.java
rename to pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
index a00367142..cbf57cbc9 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/SwaggerProvider.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
@@ -15,9 +15,10 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.gateway.config;
+package com.pig4cloud.pigx.common.swagger.support;
-import lombok.AllArgsConstructor;
+import com.pig4cloud.pigx.common.swagger.config.SwaggerProperties;
+import lombok.RequiredArgsConstructor;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
import org.springframework.cloud.gateway.support.NameUtils;
@@ -34,16 +35,16 @@ import java.util.stream.Collectors;
/**
* @author Sywd 聚合接口文档注册,和zuul实现类似
*/
-@Component
@Primary
-@AllArgsConstructor
+@Component
+@RequiredArgsConstructor
public class SwaggerProvider implements SwaggerResourcesProvider {
private static final String API_URI = "/v2/api-docs";
private final RouteDefinitionRepository routeDefinitionRepository;
- private final FilterIgnorePropertiesConfig filterIgnorePropertiesConfig;
+ private final SwaggerProperties swaggerProperties;
@Override
public List get() {
@@ -52,7 +53,7 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
return routes.stream()
.flatMap(routeDefinition -> routeDefinition.getPredicates().stream()
.filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
- .filter(predicateDefinition -> !filterIgnorePropertiesConfig.getSwaggerProviders()
+ .filter(predicateDefinition -> !swaggerProperties.getIgnoreProviders()
.contains(routeDefinition.getId()))
.map(predicateDefinition -> swaggerResource(routeDefinition.getId(),
predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**",
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerResourceHandler.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerResourceHandler.java
similarity index 97%
rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerResourceHandler.java
rename to pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerResourceHandler.java
index b29f1418c..a1212da8f 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerResourceHandler.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerResourceHandler.java
@@ -15,7 +15,7 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.gateway.handler;
+package com.pig4cloud.pigx.common.swagger.support;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerSecurityHandler.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerSecurityHandler.java
similarity index 97%
rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerSecurityHandler.java
rename to pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerSecurityHandler.java
index 8721553d9..a5d99589c 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerSecurityHandler.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerSecurityHandler.java
@@ -15,7 +15,7 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.gateway.handler;
+package com.pig4cloud.pigx.common.swagger.support;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerUiHandler.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerUiHandler.java
similarity index 97%
rename from pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerUiHandler.java
rename to pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerUiHandler.java
index 47ba2ff13..86bb435cd 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/SwaggerUiHandler.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerUiHandler.java
@@ -15,7 +15,7 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.gateway.handler;
+package com.pig4cloud.pigx.common.swagger.support;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/pigx-gateway/pom.xml b/pigx-gateway/pom.xml
index 7ed57644e..928c526ad 100644
--- a/pigx-gateway/pom.xml
+++ b/pigx-gateway/pom.xml
@@ -82,21 +82,10 @@
com.pig4cloud
pigx-common-sentinel
-
+
- io.springfox
- springfox-swagger-ui
- ${swagger.fox.version}
-
-
- io.springfox
- springfox-swagger2
- ${swagger.fox.version}
-
-
- com.github.xiaoymin
- knife4j-spring-ui
- ${knife4j.version}
+ com.pig4cloud
+ pigx-common-swagger
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java
index 2fff7176a..05b7b914b 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/PigxGatewayApplication.java
@@ -20,6 +20,7 @@
package com.pig4cloud.pigx.gateway;
import com.pig4cloud.pigx.common.gateway.annotation.EnablePigxDynamicRoute;
+import com.pig4cloud.pigx.common.swagger.annotation.EnablePigxSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
@@ -27,6 +28,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
* @author lengleng
* @date 2018年06月21日 网关应用
*/
+@EnablePigxSwagger2
@EnablePigxDynamicRoute
@SpringCloudApplication
public class PigxGatewayApplication {
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/FilterIgnorePropertiesConfig.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/FilterIgnorePropertiesConfig.java
deleted file mode 100644
index 4149f2b83..000000000
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/FilterIgnorePropertiesConfig.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2018-2025, lengleng All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * Neither the name of the pig4cloud.com developer nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * Author: lengleng (wangiegie@gmail.com)
- */
-
-package com.pig4cloud.pigx.gateway.config;
-
-import lombok.Data;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.context.annotation.Configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author lengleng
- * @date 2018/7/22 网关不校验终端配置
- */
-@Data
-@Configuration
-@RefreshScope
-@ConditionalOnExpression("!'${ignore}'.isEmpty()")
-@ConfigurationProperties(prefix = "ignore")
-public class FilterIgnorePropertiesConfig {
-
- private List clients = new ArrayList<>();
-
- private List swaggerProviders = new ArrayList<>();
-
-}
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/GatewayConfigProperties.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/GatewayConfigProperties.java
new file mode 100644
index 000000000..579c7a942
--- /dev/null
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/GatewayConfigProperties.java
@@ -0,0 +1,32 @@
+package com.pig4cloud.pigx.gateway.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author lengleng
+ * @date 2020/10/2
+ *
+ * 网关通用配置文件
+ */
+@Data
+@Component
+@RefreshScope
+@ConfigurationProperties("gateway")
+public class GatewayConfigProperties {
+
+ /**
+ * 网关解密登录前端密码 秘钥 {@link com.pig4cloud.pigx.gateway.filter.PasswordDecoderFilter}
+ */
+ public String encodeKey;
+
+ /**
+ * 网关不需要校验验证码的客户端 {@link com.pig4cloud.pigx.gateway.filter.ValidateCodeGatewayFilter}
+ */
+ public List ignoreClient;
+
+}
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java
index 8e75f4a2e..6c2eea798 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/config/RouterFunctionConfiguration.java
@@ -17,7 +17,8 @@
package com.pig4cloud.pigx.gateway.config;
-import com.pig4cloud.pigx.gateway.handler.*;
+import com.pig4cloud.pigx.gateway.handler.ImageCodeCheckHandler;
+import com.pig4cloud.pigx.gateway.handler.ImageCodeCreateHandler;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
@@ -40,25 +41,13 @@ public class RouterFunctionConfiguration {
private final ImageCodeCreateHandler imageCodeCreateHandler;
- private final SwaggerResourceHandler swaggerResourceHandler;
-
- private final SwaggerSecurityHandler swaggerSecurityHandler;
-
- private final SwaggerUiHandler swaggerUiHandler;
-
@Bean
public RouterFunction routerFunction() {
return RouterFunctions
.route(RequestPredicates.path("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
imageCodeCreateHandler)
.andRoute(RequestPredicates.POST("/code/check").and(RequestPredicates.accept(MediaType.ALL)),
- imageCodeCheckHandler)
- .andRoute(RequestPredicates.GET("/swagger-resources").and(RequestPredicates.accept(MediaType.ALL)),
- swaggerResourceHandler)
- .andRoute(RequestPredicates.GET("/swagger-resources/configuration/ui")
- .and(RequestPredicates.accept(MediaType.ALL)), swaggerUiHandler)
- .andRoute(RequestPredicates.GET("/swagger-resources/configuration/security")
- .and(RequestPredicates.accept(MediaType.ALL)), swaggerSecurityHandler);
+ imageCodeCheckHandler);
}
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java
index 9406abb3e..f3a298785 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/PasswordDecoderFilter.java
@@ -25,8 +25,9 @@ import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.http.HttpUtil;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
+import com.pig4cloud.pigx.gateway.config.GatewayConfigProperties;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutputMessage;
@@ -69,8 +70,8 @@ public class PasswordDecoderFilter extends AbstractGatewayFilterFactory {
private static final String KEY_ALGORITHM = "AES";
- @Value("${security.encode.key:1234567812345678}")
- private String encodeKey;
+ @Autowired
+ private GatewayConfigProperties gatewayConfig;
@Override
public GatewayFilter apply(Object config) {
@@ -115,8 +116,9 @@ public class PasswordDecoderFilter extends AbstractGatewayFilterFactory {
private Function decryptAES() {
return s -> {
// 构建前端对应解密AES 因子
- AES aes = new AES(Mode.CBC, Padding.NoPadding, new SecretKeySpec(encodeKey.getBytes(), KEY_ALGORITHM),
- new IvParameterSpec(encodeKey.getBytes()));
+ AES aes = new AES(Mode.CBC, Padding.NoPadding,
+ new SecretKeySpec(gatewayConfig.getEncodeKey().getBytes(), KEY_ALGORITHM),
+ new IvParameterSpec(gatewayConfig.getEncodeKey().getBytes()));
// 获取请求密码并解密
Map inParamsMap = HttpUtil.decodeParamMap((String) s, CharsetUtil.CHARSET_UTF_8);
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java
index 1aec02eaa..41636b6ad 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java
@@ -30,7 +30,7 @@ import com.pig4cloud.pigx.common.core.exception.ValidateCodeException;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.SpringContextHolder;
import com.pig4cloud.pigx.common.core.util.WebUtils;
-import com.pig4cloud.pigx.gateway.config.FilterIgnorePropertiesConfig;
+import com.pig4cloud.pigx.gateway.config.GatewayConfigProperties;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -59,7 +59,7 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory {
private final RedisTemplate redisTemplate;
- private final FilterIgnorePropertiesConfig filterIgnorePropertiesConfig;
+ private final GatewayConfigProperties gatewayConfig;
@Override
public GatewayFilter apply(Object config) {
@@ -82,7 +82,7 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory {
try {
String header = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
String clientId = WebUtils.extractClientId(header).orElse(null);
- if (StrUtil.isNotBlank(clientId) && filterIgnorePropertiesConfig.getClients().contains(clientId)) {
+ if (StrUtil.isNotBlank(clientId) && gatewayConfig.getIgnoreClient().contains(clientId)) {
return chain.filter(exchange);
}
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCheckHandler.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCheckHandler.java
index 81fdc12f3..003d2328b 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCheckHandler.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCheckHandler.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.SpringContextHolder;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
@@ -42,7 +42,7 @@ import reactor.core.publisher.Mono;
*/
@Slf4j
@Component
-@AllArgsConstructor
+@RequiredArgsConstructor
public class ImageCodeCheckHandler implements HandlerFunction {
private final ObjectMapper objectMapper;
diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCreateHandler.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCreateHandler.java
index 76c4c2376..edd33974d 100644
--- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCreateHandler.java
+++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/handler/ImageCodeCreateHandler.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.SpringContextHolder;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
@@ -42,7 +42,7 @@ import reactor.core.publisher.Mono;
*/
@Slf4j
@Component
-@AllArgsConstructor
+@RequiredArgsConstructor
public class ImageCodeCreateHandler implements HandlerFunction {
private final ObjectMapper objectMapper;
diff --git a/pom.xml b/pom.xml
index 639669b0b..e573e090f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
2.3.0
5.4.3
1.2.4
- 2.9.2
+ 3.0.0
2.0.4
1.7
4.1.0