Commit 60556dcd authored by 赵啸非's avatar 赵啸非

添加网关验证码验证

parent 2648caef
<component name="libraryTable">
<library name="Maven: cglib:cglib:3.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/cglib/cglib/3.1/cglib-3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/cglib/cglib/3.1/cglib-3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/cglib/cglib/3.1/cglib-3.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-annotation-aspectj:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-annotation-aspectj/1.8.4/sentinel-annotation-aspectj-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-annotation-aspectj/1.8.4/sentinel-annotation-aspectj-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-annotation-aspectj/1.8.4/sentinel-annotation-aspectj-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-apache-dubbo-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-apache-dubbo-adapter/1.8.4/sentinel-apache-dubbo-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-apache-dubbo-adapter/1.8.4/sentinel-apache-dubbo-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-apache-dubbo-adapter/1.8.4/sentinel-apache-dubbo-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-api-gateway-adapter-common:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-api-gateway-adapter-common/1.8.4/sentinel-api-gateway-adapter-common-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-api-gateway-adapter-common/1.8.4/sentinel-api-gateway-adapter-common-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-api-gateway-adapter-common/1.8.4/sentinel-api-gateway-adapter-common-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-client-default/1.8.4/sentinel-cluster-client-default-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-client-default/1.8.4/sentinel-cluster-client-default-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-client-default/1.8.4/sentinel-cluster-client-default-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-cluster-common-default:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-common-default/1.8.4/sentinel-cluster-common-default-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-common-default/1.8.4/sentinel-cluster-common-default-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-common-default/1.8.4/sentinel-cluster-common-default-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-cluster-server-default:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-server-default/1.8.4/sentinel-cluster-server-default-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-server-default/1.8.4/sentinel-cluster-server-default-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-cluster-server-default/1.8.4/sentinel-cluster-server-default-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-core:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-core/1.8.4/sentinel-core-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-core/1.8.4/sentinel-core-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-core/1.8.4/sentinel-core-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-apollo:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-apollo/1.8.4/sentinel-datasource-apollo-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-apollo/1.8.4/sentinel-datasource-apollo-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-apollo/1.8.4/sentinel-datasource-apollo-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-consul:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-consul/1.8.4/sentinel-datasource-consul-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-consul/1.8.4/sentinel-datasource-consul-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-consul/1.8.4/sentinel-datasource-consul-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-extension:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-extension/1.8.4/sentinel-datasource-extension-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-extension/1.8.4/sentinel-datasource-extension-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-extension/1.8.4/sentinel-datasource-extension-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-nacos:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-nacos/1.8.4/sentinel-datasource-nacos-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-nacos/1.8.4/sentinel-datasource-nacos-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-nacos/1.8.4/sentinel-datasource-nacos-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-redis:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-redis/1.8.4/sentinel-datasource-redis-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-redis/1.8.4/sentinel-datasource-redis-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-redis/1.8.4/sentinel-datasource-redis-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-datasource-zookeeper:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-zookeeper/1.8.4/sentinel-datasource-zookeeper-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-zookeeper/1.8.4/sentinel-datasource-zookeeper-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-datasource-zookeeper/1.8.4/sentinel-datasource-zookeeper-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-dubbo-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-dubbo-adapter/1.8.4/sentinel-dubbo-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-dubbo-adapter/1.8.4/sentinel-dubbo-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-dubbo-adapter/1.8.4/sentinel-dubbo-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-parameter-flow-control:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-parameter-flow-control/1.8.4/sentinel-parameter-flow-control-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-parameter-flow-control/1.8.4/sentinel-parameter-flow-control-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-parameter-flow-control/1.8.4/sentinel-parameter-flow-control-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-reactor-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-reactor-adapter/1.8.4/sentinel-reactor-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-reactor-adapter/1.8.4/sentinel-reactor-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-reactor-adapter/1.8.4/sentinel-reactor-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-spring-cloud-gateway-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-cloud-gateway-adapter/1.8.4/sentinel-spring-cloud-gateway-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-cloud-gateway-adapter/1.8.4/sentinel-spring-cloud-gateway-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-cloud-gateway-adapter/1.8.4/sentinel-spring-cloud-gateway-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-spring-webflux-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webflux-adapter/1.8.4/sentinel-spring-webflux-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webflux-adapter/1.8.4/sentinel-spring-webflux-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webflux-adapter/1.8.4/sentinel-spring-webflux-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-spring-webmvc-adapter:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webmvc-adapter/1.8.4/sentinel-spring-webmvc-adapter-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webmvc-adapter/1.8.4/sentinel-spring-webmvc-adapter-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-spring-webmvc-adapter/1.8.4/sentinel-spring-webmvc-adapter-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-transport-common:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-common/1.8.4/sentinel-transport-common-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-common/1.8.4/sentinel-transport-common-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-common/1.8.4/sentinel-transport-common-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-transport-simple-http:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-simple-http/1.8.4/sentinel-transport-simple-http-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-simple-http/1.8.4/sentinel-transport-simple-http-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-transport-simple-http/1.8.4/sentinel-transport-simple-http-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba.csp:sentinel-web-servlet:1.8.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-web-servlet/1.8.4/sentinel-web-servlet-1.8.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-web-servlet/1.8.4/sentinel-web-servlet-1.8.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/csp/sentinel-web-servlet/1.8.4/sentinel-web-servlet-1.8.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.alibaba:druid:1.2.6">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/druid/1.2.6/druid-1.2.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/druid/1.2.6/druid-1.2.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/alibaba/druid/1.2.6/druid-1.2.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.ctrip.framework.apollo:apollo-client:1.5.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-client/1.5.0/apollo-client-1.5.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-client/1.5.0/apollo-client-1.5.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-client/1.5.0/apollo-client-1.5.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.ctrip.framework.apollo:apollo-core:1.5.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-core/1.5.0/apollo-core-1.5.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-core/1.5.0/apollo-core-1.5.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ctrip/framework/apollo/apollo-core/1.5.0/apollo-core-1.5.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.ecwid.consul:consul-api:1.4.5">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ecwid/consul/consul-api/1.4.5/consul-api-1.4.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ecwid/consul/consul-api/1.4.5/consul-api-1.4.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ecwid/consul/consul-api/1.4.5/consul-api-1.4.5-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.8">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/ben-manes/caffeine/caffeine/2.8.8/caffeine-2.8.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/ben-manes/caffeine/caffeine/2.8.8/caffeine-2.8.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/ben-manes/caffeine/caffeine/2.8.8/caffeine-2.8.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.github.spotbugs:spotbugs-annotations:3.1.9">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/spotbugs/spotbugs-annotations/3.1.9/spotbugs-annotations-3.1.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/spotbugs/spotbugs-annotations/3.1.9/spotbugs-annotations-3.1.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/github/spotbugs/spotbugs-annotations/3.1.9/spotbugs-annotations-3.1.9-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.google.inject:guice:4.1.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/google/inject/guice/4.1.0/guice-4.1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/google/inject/guice/4.1.0/guice-4.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/google/inject/guice/4.1.0/guice-4.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4.2/concurrentlinkedhashmap-lru-1.4.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.ibm.icu:icu4j:61.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ibm/icu/icu4j/61.1/icu4j-61.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ibm/icu/icu4j/61.1/icu4j-61.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/ibm/icu/icu4j/61.1/icu4j-61.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: com.typesafe:config:1.2.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/typesafe/config/1.2.1/config-1.2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/typesafe/config/1.2.1/config-1.2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/com/typesafe/config/1.2.1/config-1.2.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: commons-pool:commons-pool:1.6">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/commons-pool/commons-pool/1.6/commons-pool-1.6.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/commons-pool/commons-pool/1.6/commons-pool-1.6-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/commons-pool/commons-pool/1.6/commons-pool-1.6-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty:3.10.6.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty/3.10.6.Final/netty-3.10.6.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty/3.10.6.Final/netty-3.10.6.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty/3.10.6.Final/netty-3.10.6.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-all:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-all/4.1.65.Final/netty-all-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-all/4.1.65.Final/netty-all-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-all/4.1.65.Final/netty-all-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-codec-http2:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http2/4.1.65.Final/netty-codec-http2-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http2/4.1.65.Final/netty-codec-http2-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http2/4.1.65.Final/netty-codec-http2-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-codec-http:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http/4.1.65.Final/netty-codec-http-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http/4.1.65.Final/netty-codec-http-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-http/4.1.65.Final/netty-codec-http-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-codec-socks:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-socks/4.1.65.Final/netty-codec-socks-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-socks/4.1.65.Final/netty-codec-socks-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-codec-socks/4.1.65.Final/netty-codec-socks-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-handler-proxy:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-handler-proxy/4.1.65.Final/netty-handler-proxy-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-handler-proxy/4.1.65.Final/netty-handler-proxy-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-handler-proxy/4.1.65.Final/netty-handler-proxy-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-epoll/4.1.65.Final/netty-transport-native-epoll-4.1.65.Final-linux-x86_64.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-epoll/4.1.65.Final/netty-transport-native-epoll-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-epoll/4.1.65.Final/netty-transport-native-epoll-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.netty:netty-transport-native-unix-common:4.1.65.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-unix-common/4.1.65.Final/netty-transport-native-unix-common-4.1.65.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-unix-common/4.1.65.Final/netty-transport-native-unix-common-4.1.65.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/netty/netty-transport-native-unix-common/4.1.65.Final/netty-transport-native-unix-common-4.1.65.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.projectreactor.addons:reactor-extra:3.3.5.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/addons/reactor-extra/3.3.5.RELEASE/reactor-extra-3.3.5.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/addons/reactor-extra/3.3.5.RELEASE/reactor-extra-3.3.5.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/addons/reactor-extra/3.3.5.RELEASE/reactor-extra-3.3.5.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.projectreactor.netty:reactor-netty:0.9.16.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/netty/reactor-netty/0.9.16.RELEASE/reactor-netty-0.9.16.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/netty/reactor-netty/0.9.16.RELEASE/reactor-netty-0.9.16.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/projectreactor/netty/reactor-netty/0.9.16.RELEASE/reactor-netty-0.9.16.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.seata:seata-all:1.5.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-all/1.5.1/seata-all-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-all/1.5.1/seata-all-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-all/1.5.1/seata-all-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.seata:seata-spring-autoconfigure-client:1.5.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-client/1.5.1/seata-spring-autoconfigure-client-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-client/1.5.1/seata-spring-autoconfigure-client-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-client/1.5.1/seata-spring-autoconfigure-client-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.seata:seata-spring-autoconfigure-core:1.5.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-core/1.5.1/seata-spring-autoconfigure-core-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-core/1.5.1/seata-spring-autoconfigure-core-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-autoconfigure-core/1.5.1/seata-spring-autoconfigure-core-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: io.seata:seata-spring-boot-starter:1.5.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-boot-starter/1.5.1/seata-spring-boot-starter-1.5.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-boot-starter/1.5.1/seata-spring-boot-starter-1.5.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/io/seata/seata-spring-boot-starter/1.5.1/seata-spring-boot-starter-1.5.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: jakarta.validation:jakarta.validation-api:2.0.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: jline:jline:0.9.94">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jline/jline/0.9.94/jline-0.9.94.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jline/jline/0.9.94/jline-0.9.94-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/jline/jline/0.9.94/jline-0.9.94-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.3">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/abego/treelayout/org.abego.treelayout.core/1.0.3/org.abego.treelayout.core-1.0.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/abego/treelayout/org.abego.treelayout.core/1.0.3/org.abego.treelayout.core-1.0.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/abego/treelayout/org.abego.treelayout.core/1.0.3/org.abego.treelayout.core-1.0.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.antlr:ST4:4.3">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/ST4/4.3/ST4-4.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/ST4/4.3/ST4-4.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/ST4/4.3/ST4-4.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.antlr:antlr4:4.8">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4/4.8/antlr4-4.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4/4.8/antlr4-4.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4/4.8/antlr4-4.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.antlr:antlr4-runtime:4.8">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4-runtime/4.8/antlr4-runtime-4.8.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4-runtime/4.8/antlr4-runtime-4.8-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr4-runtime/4.8/antlr4-runtime-4.8-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.antlr:antlr-runtime:3.5.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.curator:curator-client:4.0.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-client/4.0.1/curator-client-4.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-client/4.0.1/curator-client-4.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-client/4.0.1/curator-client-4.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.curator:curator-framework:4.0.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-framework/4.0.1/curator-framework-4.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-framework/4.0.1/curator-framework-4.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-framework/4.0.1/curator-framework-4.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.curator:curator-recipes:4.0.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-recipes/4.0.1/curator-recipes-4.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-recipes/4.0.1/curator-recipes-4.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/curator/curator-recipes/4.0.1/curator-recipes-4.0.1-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.yetus:audience-annotations:0.5.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/yetus/audience-annotations/0.5.0/audience-annotations-0.5.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.apache.zookeeper:zookeeper:3.4.14">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/zookeeper/zookeeper/3.4.14/zookeeper-3.4.14.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/zookeeper/zookeeper/3.4.14/zookeeper-3.4.14-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/apache/zookeeper/zookeeper/3.4.14/zookeeper-3.4.14-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.glassfish:javax.json:1.0.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/glassfish/javax.json/1.0.4/javax.json-1.0.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/glassfish/javax.json/1.0.4/javax.json-1.0.4-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.hibernate.validator:hibernate-validator:6.1.7.Final">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/hibernate/validator/hibernate-validator/6.1.7.Final/hibernate-validator-6.1.7.Final.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/hibernate/validator/hibernate-validator/6.1.7.Final/hibernate-validator-6.1.7.Final-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/hibernate/validator/hibernate-validator/6.1.7.Final/hibernate-validator-6.1.7.Final-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.ow2.asm:asm:4.2">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/ow2/asm/asm/4.2/asm-4.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/ow2/asm/asm/4.2/asm-4.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/ow2/asm/asm/4.2/asm-4.2-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.slf4j:slf4j-log4j12:1.7.30">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework.boot:spring-boot-starter-reactor-netty:2.3.8.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-reactor-netty/2.3.8.RELEASE/spring-boot-starter-reactor-netty-2.3.8.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-reactor-netty/2.3.8.RELEASE/spring-boot-starter-reactor-netty-2.3.8.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-reactor-netty/2.3.8.RELEASE/spring-boot-starter-reactor-netty-2.3.8.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework.boot:spring-boot-starter-validation:2.3.8.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-validation/2.3.8.RELEASE/spring-boot-starter-validation-2.3.8.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-validation/2.3.8.RELEASE/spring-boot-starter-validation-2.3.8.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-validation/2.3.8.RELEASE/spring-boot-starter-validation-2.3.8.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework.boot:spring-boot-starter-webflux:2.3.8.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-webflux/2.3.8.RELEASE/spring-boot-starter-webflux-2.3.8.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-webflux/2.3.8.RELEASE/spring-boot-starter-webflux-2.3.8.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/boot/spring-boot-starter-webflux/2.3.8.RELEASE/spring-boot-starter-webflux-2.3.8.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework.cloud:spring-cloud-gateway-server:2.2.7.RELEASE">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-gateway-server/2.2.7.RELEASE/spring-cloud-gateway-server-2.2.7.RELEASE.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-gateway-server/2.2.7.RELEASE/spring-cloud-gateway-server-2.2.7.RELEASE-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-gateway-server/2.2.7.RELEASE/spring-cloud-gateway-server-2.2.7.RELEASE-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework.cloud:spring-cloud-starter-gateway:3.1.3">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-starter-gateway/3.1.3/spring-cloud-starter-gateway-3.1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-starter-gateway/3.1.3/spring-cloud-starter-gateway-3.1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/cloud/spring-cloud-starter-gateway/3.1.3/spring-cloud-starter-gateway-3.1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.springframework:spring-webflux:5.3.18">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/spring-webflux/5.3.18/spring-webflux-5.3.18.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/spring-webflux/5.3.18/spring-webflux-5.3.18-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/springframework/spring-webflux/5.3.18/spring-webflux-5.3.18-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.synchronoss.cloud:nio-multipart-parser:1.1.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-multipart-parser/1.1.0/nio-multipart-parser-1.1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-multipart-parser/1.1.0/nio-multipart-parser-1.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-multipart-parser/1.1.0/nio-multipart-parser-1.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Maven: org.synchronoss.cloud:nio-stream-storage:1.1.3">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-stream-storage/1.1.3/nio-stream-storage-1.1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-stream-storage/1.1.3/nio-stream-storage-1.1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../MavenRepository/maven_jar/org/synchronoss/cloud/nio-stream-storage/1.1.3/nio-stream-storage-1.1.3-sources.jar!/" />
</SOURCES>
</library>
</component>
\ No newline at end of file
...@@ -7,12 +7,13 @@ Accept: application/json ...@@ -7,12 +7,13 @@ Accept: application/json
###区域列表 ###区域列表
POST {{baseUrl}}/area/list POST {{baseUrl}}/area/list
Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"areaCode":"510000000000", "pid":0,
"page":1, "page":1,
"size":5 "size":-1
} }
###区域查看 ###区域查看
......
...@@ -6,8 +6,7 @@ Content-Type: application/json ...@@ -6,8 +6,7 @@ Content-Type: application/json
{ {
"page":1, "page":1,
"size":10, "size":-1
"parentId":2
} }
...@@ -17,19 +16,14 @@ Authorization: {{authToken}} ...@@ -17,19 +16,14 @@ Authorization: {{authToken}}
Content-Type: application/json Content-Type: application/json
{ {
"name":"测试菜单2", "name":"测试菜单3",
"url":"", "url":"",
"parentId":-1, "parentId":-1,
"linkType":0, "linkType":0,
"imgPath":"7mqw6a", "imgPath":"7mqw6a",
"buttonImgPath":"vcr5tv",
"imgCommPath":"qnglei",
"visible":1,
"menuType":0, "menuType":0,
"status":1,
"authType":3, "authType":3,
"orderId":0, "orderId":0
"createUserName":"ahjsmm"
} }
> {% > {%
......
...@@ -13,6 +13,13 @@ ...@@ -13,6 +13,13 @@
<artifactId>smart-gateway</artifactId> <artifactId>smart-gateway</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<description>一体化政务网关</description> <description>一体化政务网关</description>
<properties>
<!-- 流控 -->
<sentinel.version>1.8.4</sentinel.version>
<!-- 分布式事务 -->
<seata.version>1.5.1</seata.version>
</properties>
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
...@@ -39,6 +46,24 @@ ...@@ -39,6 +46,24 @@
<groupId>com.mortals.xhx</groupId> <groupId>com.mortals.xhx</groupId>
<artifactId>common-lib</artifactId> <artifactId>common-lib</artifactId>
</dependency> </dependency>
<!-- Sa-Token 权限认证(Reactor响应式集成), 在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-reactor-spring-boot-starter</artifactId>
<version>1.30.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>3.1.3</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -56,6 +81,112 @@ ...@@ -56,6 +81,112 @@
<artifactId>spring-data-redis</artifactId> <artifactId>spring-data-redis</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-parameter-flow-control</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-extension</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-apollo</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-zookeeper</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-redis</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-consul</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-web-servlet</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-annotation-aspectj</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-dubbo-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-apache-dubbo-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-reactor-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-cluster-server-default</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-cluster-client-default</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-webflux-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-api-gateway-adapter-common</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-webmvc-adapter</artifactId>
<version>${sentinel.version}</version>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>${seata.version}</version>
</dependency>
</dependencies> </dependencies>
......
package com.mortals.xhx.base.framework.captcha;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.core.math.Calculator;
import cn.hutool.core.util.CharUtil;
import cn.hutool.core.util.RandomUtil;
import org.apache.commons.lang.StringUtils;
/**
* 无符号计算生成器
*
* @author: zxfei
* @date: 2022/6/20 16:30
*/
public class UnsignedMathGenerator implements CodeGenerator {
private static final long serialVersionUID = -5514819971774091076L;
private static final String OPERATORS = "+-*";
/**
* 参与计算数字最大长度
*/
private final int numberLength;
/**
* 构造
*/
public UnsignedMathGenerator() {
this(2);
}
/**
* 构造
*
* @param numberLength 参与计算最大数字位数
*/
public UnsignedMathGenerator(int numberLength) {
this.numberLength = numberLength;
}
@Override
public String generate() {
final int limit = getLimit();
int a = RandomUtil.randomInt(limit);
int b = RandomUtil.randomInt(limit);
String max = Integer.toString(Math.max(a, b));
String min = Integer.toString(Math.min(a, b));
max = StringUtils.rightPad(max, this.numberLength, CharUtil.SPACE);
min = StringUtils.rightPad(min, this.numberLength, CharUtil.SPACE);
return max + RandomUtil.randomChar(OPERATORS) + min + '=';
}
@Override
public boolean verify(String code, String userInputCode) {
int result;
try {
result = Integer.parseInt(userInputCode);
} catch (NumberFormatException e) {
// 用户输入非数字
return false;
}
final int calculateResult = (int) Calculator.conversion(code);
return result == calculateResult;
}
/**
* 获取验证码长度
*
* @return 验证码长度
*/
public int getLength() {
return this.numberLength * 2 + 2;
}
/**
* 根据长度获取参与计算数字最大值
*
* @return 最大值
*/
private int getLimit() {
return Integer.parseInt("1" + StringUtils.repeat("0", this.numberLength));
}
}
package com.mortals.xhx.base.framework.config;
import com.mortals.xhx.common.code.CaptchaCategory;
import com.mortals.xhx.common.code.CaptchaType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
/**
* 验证码配置
*
* @author: zxfei
* @date: 2022/6/20 16:29
*/
@Data
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "security.captcha")
public class CaptchaProperties {
/**
* 验证码类型
*/
private CaptchaType type;
/**
* 验证码类别
*/
private CaptchaCategory category;
/**
* 数字验证码位数
*/
private Integer numberLength;
/**
* 字符验证码长度
*/
private Integer charLength;
/**
* 验证码开关
*/
private Boolean enabled;
}
package com.mortals.xhx.base.framework.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
/**
* 自定义gateway参数配置
*
* @author: zxfei
* @date: 2022/6/20 17:03
*/
@Data
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "spring.cloud.gateway")
public class CustomGatewayProperties {
/**
* 请求日志
*/
private Boolean requestLog;
}
package com.mortals.xhx.base.framework.config;
import com.mortals.xhx.base.framework.handler.SentinelFallbackHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
/**
* 网关限流配置
*
* @author: zxfei
* @date: 2022/6/20 13:52
*/
@Configuration
public class GatewayConfig {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SentinelFallbackHandler sentinelGatewayExceptionHandler() {
return new SentinelFallbackHandler();
}
}
\ No newline at end of file
package com.mortals.xhx.base.framework.config;
import lombok.Data;
import lombok.NoArgsConstructor;
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: zxfei
* @date: 2022/6/17 14:10
*/
@Data
@NoArgsConstructor
@Configuration
@RefreshScope
@ConfigurationProperties(prefix = "security.ignore")
public class IgnoreWhiteProperties {
/**
* 白名单配置,网关不校验此处的白名单
*/
private List<String> whites = new ArrayList<>();
}
package com.mortals.xhx.base.framework.config;
import com.mortals.xhx.base.framework.handler.ValidateCodeHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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: zxfei
* @date: 2022/6/20 14:05
*/
@Configuration
public class RouterFunctionConfiguration {
@Autowired
private ValidateCodeHandler validateCodeHandler;
@SuppressWarnings("rawtypes")
@Bean
public RouterFunction routerFunction() {
return RouterFunctions.route(
RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
validateCodeHandler);
}
}
package com.mortals.xhx.base.framework.expection;
import com.mortals.framework.exception.AppException;
/**
* 验证码错误异常类
*
* @author: zxfei
* @date: 2022/6/20 16:28
*/
public class CaptchaException extends AppException {
private static final long serialVersionUID = 1L;
public CaptchaException() {
super("user.captcha.error");
}
public CaptchaException(String msg) {
super(msg);
}
}
package com.mortals.xhx.base.framework.expection;
import com.mortals.framework.exception.AppException;
/**
* 验证码失效异常类
*
* @author: zxfei
* @date: 2022/6/20 16:38
*/
public class CaptchaExpireException extends AppException {
private static final long serialVersionUID = 1L;
public CaptchaExpireException() {
super("user.captcha.expire.error");
}
}
package com.mortals.xhx.base.framework.filter;
import cn.dev33.satoken.reactor.filter.SaReactorFilter;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.mortals.framework.common.HttpStatus;
import com.mortals.xhx.base.framework.config.IgnoreWhiteProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Sa-Token 权限认证拦截器
*
* @author: zxfei
* @date: 2022/6/17 15:18
*/
@Configuration
public class AuthFilter {
/**
* 注册 Sa-Token 全局过滤器
*/
@Bean
public SaReactorFilter getSaReactorFilter(IgnoreWhiteProperties ignoreWhite) {
return new SaReactorFilter()
// 拦截地址
.addInclude("/**")
//排除地址
.addExclude("/favicon.ico", "/actuator/**")
// 鉴权方法:每次访问进入
.setAuth(obj -> {
// 登录校验 -- 拦截所有路由
SaRouter.match("/**")
.notMatch(ignoreWhite.getWhites())
.check(r -> {
// 检查是否登录 是否有token
StpUtil.checkLogin();
// 有效率影响 用于临时测试
// if (log.isDebugEnabled()) {
// log.debug("剩余有效时间: {}", StpUtil.getTokenTimeout());
// log.debug("临时有效时间: {}", StpUtil.getTokenActivityTimeout());
// }
});
}).setError(e -> SaResult.error("认证失败,无法访问系统资源").setCode(HttpStatus.UNAUTHORIZED));
}
}
package com.mortals.xhx.base.framework.filter;
import com.mortals.xhx.common.utils.WebFluxUtils;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
/**
* 黑名单过滤器
*
* @author: zxfei
* @date: 2022/6/20 16:49
*/
@Component
public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config> {
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
String url = exchange.getRequest().getURI().getPath();
if (config.matchBlacklist(url)) {
return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), "请求地址不允许访问");
}
return chain.filter(exchange);
};
}
public BlackListUrlFilter() {
super(Config.class);
}
public static class Config {
private List<String> blacklistUrl;
private List<Pattern> blacklistUrlPattern = new ArrayList<>();
public boolean matchBlacklist(String url) {
return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find());
}
public List<String> getBlacklistUrl() {
return blacklistUrl;
}
public void setBlacklistUrl(List<String> blacklistUrl) {
this.blacklistUrl = blacklistUrl;
this.blacklistUrlPattern.clear();
this.blacklistUrl.forEach(url -> {
this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE));
});
}
}
}
package com.mortals.xhx.base.framework.filter;
import cn.dev33.satoken.id.SaIdUtil;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* 转发认证过滤器(内部服务外网隔离)
*
* @author: zxfei
* @date: 2022/6/20 16:57
*/
@Component
public class ForwardAuthFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest newRequest = exchange
.getRequest()
.mutate()
// 为请求添加 Id-Token 参数
.header(SaIdUtil.ID_TOKEN, SaIdUtil.getToken())
.build();
ServerWebExchange newExchange = exchange.mutate().request(newRequest).build();
return chain.filter(newExchange);
}
}
package com.mortals.xhx.base.framework.filter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.core.Ordered;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* 全局缓存获取body请求数据(解决流不能重复读取问题)
*
* @author: zxfei
* @date: 2022/6/20 16:59
*/
@Component
public class GlobalCacheRequestFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// GET DELETE 不过滤
HttpMethod method = exchange.getRequest().getMethod();
if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE) {
return chain.filter(exchange);
}
return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> {
if (serverHttpRequest == exchange.getRequest()) {
return chain.filter(exchange);
}
return chain.filter(exchange.mutate().request(serverHttpRequest).build());
});
}
@Override
public int getOrder() {
return 0;
}
}
package com.mortals.xhx.base.framework.filter;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.xhx.base.framework.config.CustomGatewayProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.util.UriComponentsBuilder;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashSet;
import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR;
/**
* 用于打印请求执行参数与响应时间等等
*
* @author: zxfei
* @date: 2022/6/20 17:00
*/
@Slf4j
@Component
public class GlobalLogFilter implements GlobalFilter, Ordered {
@Autowired
private CustomGatewayProperties customGatewayProperties;
private static final String START_TIME = "startTime";
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
String path = getOriginalRequestUrl(exchange);
String url = request.getMethod().name() + " " + path;
if (!customGatewayProperties.getRequestLog()) {
return chain.filter(exchange);
}
// 打印请求参数
if (isJsonRequest(request)) {
String jsonParam = resolveBodyFromRequest(request);
log.debug("开始请求 => URL[{}],参数类型[json],参数:[{}]", url, jsonParam);
} else {
MultiValueMap<String, String> parameterMap = request.getQueryParams();
if (MapUtil.isNotEmpty(parameterMap)) {
log.debug("开始请求 => URL[{}],参数类型[param],参数:[{}]", url, JSON.toJSONString(parameterMap));
} else {
log.debug("开始请求 => URL[{}],无参数", url);
}
}
exchange.getAttributes().put(START_TIME, System.currentTimeMillis());
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
Long startTime = exchange.getAttribute(START_TIME);
if (startTime != null) {
long executeTime = (System.currentTimeMillis() - startTime);
log.debug("结束请求 => URL[{}],耗时:[{}]毫秒", url, executeTime);
}
}));
}
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
/**
* 判断本次请求的数据类型是否为json
*
* @param request request
* @return boolean
*/
private boolean isJsonRequest(ServerHttpRequest request) {
MediaType contentType = request.getHeaders().getContentType();
if (contentType != null) {
return StringUtils.startsWithIgnoreCase(contentType.toString(), MediaType.APPLICATION_JSON_VALUE);
}
return false;
}
private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest) {
//获取请求体
Flux<DataBuffer> body = serverHttpRequest.getBody();
StringBuilder sb = new StringBuilder();
body.subscribe(buffer -> {
byte[] bytes = new byte[buffer.readableByteCount()];
buffer.read(bytes);
String bodyString = new String(bytes, StandardCharsets.UTF_8);
sb.append(bodyString);
});
return sb.toString();
}
public static String getOriginalRequestUrl(ServerWebExchange exchange) {
ServerHttpRequest request = exchange.getRequest();
LinkedHashSet<URI> uris = exchange.getRequiredAttribute(GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
URI requestUri = uris.stream().findFirst().orElse(request.getURI());
return UriComponentsBuilder.fromPath(requestUri.getRawPath()).build().toUriString();
}
}
package com.mortals.xhx.base.framework.handler;
import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.GatewayCallbackManager;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.mortals.xhx.common.utils.WebFluxUtils;
import org.springframework.web.reactive.function.server.ServerResponse;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebExceptionHandler;
import reactor.core.publisher.Mono;
/**
* 自定义限流异常处理
*
* @author: zxfei
* @date: 2022/6/20 13:53
*/
public class SentinelFallbackHandler implements WebExceptionHandler {
private Mono<Void> writeResponse(ServerResponse response, ServerWebExchange exchange) {
return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), "请求超过最大数,请稍候再试");
}
@Override
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
ex.printStackTrace();
if (exchange.getResponse().isCommitted()) {
return Mono.error(ex);
}
if (!BlockException.isBlockException(ex)) {
return Mono.error(ex);
}
return handleBlockedRequest(exchange, ex).flatMap(response -> writeResponse(response, exchange));
}
private Mono<ServerResponse> handleBlockedRequest(ServerWebExchange exchange, Throwable throwable) {
return GatewayCallbackManager.getBlockHandler().handleRequest(exchange, throwable);
}
}
package com.mortals.xhx.base.framework.handler;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.base.framework.expection.CaptchaException;
import com.mortals.xhx.base.framework.service.ValidateCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.HandlerFunction;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
import java.io.IOException;
import java.util.Map;
/**
* 验证码获取
*
* @author: zxfei
* @date: 2022/6/20 14:07
*/
@Component
public class ValidateCodeHandler implements HandlerFunction<ServerResponse> {
@Autowired
private ValidateCodeService validateCodeService;
@Override
public Mono<ServerResponse> handle(ServerRequest serverRequest) {
Rest<Map<String, Object>> ajax;
try {
ajax = validateCodeService.createCaptcha();
} catch (CaptchaException | IOException e) {
return Mono.error(e);
}
return ServerResponse.status(HttpStatus.OK).body(BodyInserters.fromValue(ajax));
}
}
package com.mortals.xhx.base.framework.service;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.base.framework.expection.CaptchaException;
import java.io.IOException;
import java.util.Map;
/**
* 验证码处理
*
* @author: zxfei
* @date: 2022/6/20 16:25
*/
public interface ValidateCodeService {
/**
* 生成验证码
*/
Rest<Map<String, Object>> createCaptcha() throws IOException, CaptchaException;
/**
* 校验验证码
*/
void checkCaptcha(String key, String value) throws CaptchaException;
}
package com.mortals.xhx.base.framework.service.impl;
import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ReflectUtil;
import com.mortals.framework.common.Rest;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.utils.redis.RedisUtils;
import com.mortals.xhx.base.framework.config.CaptchaProperties;
import com.mortals.xhx.base.framework.expection.CaptchaException;
import com.mortals.xhx.base.framework.expection.CaptchaExpireException;
import com.mortals.xhx.base.framework.service.ValidateCodeService;
import com.mortals.xhx.common.code.CaptchaType;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.utils.SpringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
/**
* 验证码实现处理
*
* @author: zxfei
* @date: 2022/6/20 16:32
*/
@Service
public class ValidateCodeServiceImpl implements ValidateCodeService {
@Autowired
private CaptchaProperties captchaProperties;
@Autowired
private ICacheService cacheService;
/**
* 生成验证码
*/
@Override
public Rest<Map<String, Object>> createCaptcha() throws IOException, CaptchaException {
Map<String, Object> ajax = new HashMap<>();
boolean captchaOnOff = captchaProperties.getEnabled();
ajax.put("captchaOnOff", captchaOnOff);
if (!captchaOnOff) {
return Rest.ok(ajax);
}
// 保存验证码信息
String uuid = IdUtil.simpleUUID();
String verifyKey = Constant.CAPTCHA_CODE_KEY + uuid;
// 生成验证码
CaptchaType captchaType = captchaProperties.getType();
boolean isMath = CaptchaType.MATH == captchaType;
Integer length = isMath ? captchaProperties.getNumberLength() : captchaProperties.getCharLength();
CodeGenerator codeGenerator = ReflectUtil.newInstance(captchaType.getClazz(), length);
AbstractCaptcha captcha = SpringUtils.getBean(captchaProperties.getCategory().getClazz());
captcha.setGenerator(codeGenerator);
captcha.createCode();
String code = isMath ? getCodeResult(captcha.getCode()) : captcha.getCode();
cacheService.setnx(verifyKey, code, Duration.ofMinutes(Constant.CAPTCHA_EXPIRATION).toMillis());
ajax.put("uuid", uuid);
ajax.put("img", captcha.getImageBase64());
return Rest.ok(ajax);
}
private String getCodeResult(String capStr) {
int numberLength = captchaProperties.getNumberLength();
int a = Convert.toInt(StringUtils.substring(capStr, 0, numberLength).trim());
char operator = capStr.charAt(numberLength);
int b = Convert.toInt(StringUtils.substring(capStr, numberLength + 1, numberLength + 1 + numberLength).trim());
switch (operator) {
case '*':
return Convert.toStr(a * b);
case '+':
return Convert.toStr(a + b);
case '-':
return Convert.toStr(a - b);
default:
return StringUtils.EMPTY;
}
}
/**
* 校验验证码
*/
@Override
public void checkCaptcha(String code, String uuid) throws CaptchaException {
if (StringUtils.isEmpty(code)) {
throw new CaptchaException("user.captcha.not.blank");
}
if (StringUtils.isEmpty(uuid)) {
throw new CaptchaExpireException();
}
String verifyKey = Constant.CAPTCHA_CODE_KEY + uuid;
String captcha = cacheService.get(verifyKey);
RedisUtils.deleteObject(verifyKey);
if (!code.equalsIgnoreCase(captcha)) {
throw new CaptchaException();
}
}
}
package com.mortals.xhx.common.code;
import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.CircleCaptcha;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.ShearCaptcha;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 验证码类别
*
* @author: zxfei
* @date: 2022/6/20 16:30
*/
@Getter
@AllArgsConstructor
public enum CaptchaCategory {
/**
* 线段干扰
*/
LINE(LineCaptcha.class),
/**
* 圆圈干扰
*/
CIRCLE(CircleCaptcha.class),
/**
* 扭曲干扰
*/
SHEAR(ShearCaptcha.class);
private final Class<? extends AbstractCaptcha> clazz;
}
package com.mortals.xhx.common.code;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.captcha.generator.RandomGenerator;
import com.mortals.xhx.base.framework.captcha.UnsignedMathGenerator;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 验证码类型
*
* @author: zxfei
* @date: 2022/6/20 16:30
*/
@Getter
@AllArgsConstructor
public enum CaptchaType {
/**
* 数字
*/
MATH(UnsignedMathGenerator.class),
/**
* 字符
*/
CHAR(RandomGenerator.class);
private final Class<? extends CodeGenerator> clazz;
}
...@@ -6,4 +6,15 @@ public final class Constant { ...@@ -6,4 +6,15 @@ public final class Constant {
public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0"; public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0";
public final static String KEY_PORTAL_SERVER_NAME = "${application.server.portal.service:iot-portal-api}"; public final static String KEY_PORTAL_SERVER_NAME = "${application.server.portal.service:iot-portal-api}";
/**
* 验证码 redis key
*/
public final static String CAPTCHA_CODE_KEY = "captchaCodes:";
/**
* 验证码有效期(分钟)
*/
public final static long CAPTCHA_EXPIRATION = 2;
} }
package com.mortals.xhx.common.utils;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse;
import reactor.core.publisher.Mono;
/**
* WebFlux 工具类
*
* @author: zxfei
* @date: 2022/6/17 15:23
*/
public class WebFluxUtils {
/**
* 设置webflux模型响应
*
* @param response ServerHttpResponse
* @param value 响应内容
* @return Mono<Void>
*/
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value) {
return webFluxResponseWriter(response, HttpStatus.OK, value, 500);
}
/**
* 设置webflux模型响应
*
* @param response ServerHttpResponse
* @param code 响应状态码
* @param value 响应内容
* @return Mono<Void>
*/
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code) {
return webFluxResponseWriter(response, HttpStatus.OK, value, code);
}
/**
* 设置webflux模型响应
*
* @param response ServerHttpResponse
* @param status http状态码
* @param code 响应状态码
* @param value 响应内容
* @return Mono<Void>
*/
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code) {
return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code);
}
/**
* 设置webflux模型响应
*
* @param response ServerHttpResponse
* @param contentType content-type
* @param status http状态码
* @param code 响应状态码
* @param value 响应内容
* @return Mono<Void>
*/
public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code) {
//设置响应状态码
response.setStatusCode(status);
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType);
Rest<?> result = Rest.fail(code, value.toString());
DataBuffer dataBuffer = response.bufferFactory().wrap(JSON.toJSONString(result).getBytes());
return response.writeWith(Mono.just(dataBuffer));
}
}
...@@ -10,7 +10,6 @@ spring: ...@@ -10,7 +10,6 @@ spring:
multipart: multipart:
maxFileSize: 100Mb maxFileSize: 100Mb
maxRequestSize: 1000Mb maxRequestSize: 1000Mb
cloud: cloud:
nacos: nacos:
# Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类 # Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment