From ff22cd374ff6b19ba2fec671b725c954977976fa Mon Sep 17 00:00:00 2001 From: hsdllcw Date: Thu, 25 Jul 2024 13:41:15 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E6=96=B0=E5=A2=9E=E8=B7=A8=E5=9F=9F?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-gateway/pom.xml | 308 +++++++++++------- .../com/ruoyi/gateway/config/CorsFilter.kt | 32 ++ 2 files changed, 230 insertions(+), 110 deletions(-) create mode 100644 ruoyi-gateway/src/main/kotlin/com/ruoyi/gateway/config/CorsFilter.kt diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index 771df7fd0..d698c0feb 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -1,110 +1,198 @@ - - - com.ruoyi - ruoyi - 3.6.4 - - 4.0.0 - - ruoyi-gateway - - - ruoyi-gateway网关模块 - - - - - - - org.springframework.cloud - spring-cloud-starter-gateway - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - - com.alibaba.cloud - spring-cloud-alibaba-sentinel-gateway - - - - - com.alibaba.csp - sentinel-datasource-nacos - - - - - org.springframework.boot - spring-boot-starter-actuator - - - - - org.springframework.cloud - spring-cloud-loadbalancer - - - - - pro.fessional - kaptcha - - - - - com.ruoyi - ruoyi-common-redis - - - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - - io.springfox - springfox-swagger2 - ${swagger.fox.version} - - - - - - ${project.artifactId} - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - - - + + + com.ruoyi + ruoyi + 3.6.4 + + 4.0.0 + + ruoyi-gateway + + + ruoyi-gateway网关模块 + + + + 2.0.0 + + + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + com.alibaba.cloud + spring-cloud-alibaba-sentinel-gateway + + + + + com.alibaba.csp + sentinel-datasource-nacos + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + + pro.fessional + kaptcha + + + + + com.ruoyi + ruoyi-common-redis + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + io.springfox + springfox-swagger2 + ${swagger.fox.version} + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + test + + + + + + ${project.artifactId} + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.8 + + + add-source + generate-sources + + add-source + + + + src/main/java + src/main/kotlin + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + 1.8 + + + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + none + + + default-testCompile + none + + + compile + compile + + compile + + + + testCompile + test-compile + + testCompile + + + + + + + + diff --git a/ruoyi-gateway/src/main/kotlin/com/ruoyi/gateway/config/CorsFilter.kt b/ruoyi-gateway/src/main/kotlin/com/ruoyi/gateway/config/CorsFilter.kt new file mode 100644 index 000000000..aa4a04712 --- /dev/null +++ b/ruoyi-gateway/src/main/kotlin/com/ruoyi/gateway/config/CorsFilter.kt @@ -0,0 +1,32 @@ +package com.ruoyi.gateway.config + +import org.apache.commons.lang3.ObjectUtils +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.web.server.WebFilter + + +@Configuration +open class CorsConfig { + @Value("\${cors.orgins}") + private val corsOrgins: String? = null + + @Bean + open fun corsFilter(): WebFilter { + return WebFilter { exchange, chain -> + val response = exchange.response + val request = exchange.request + if (!ObjectUtils.isEmpty(corsOrgins)) { + response.headers["Access-Control-Allow-Origin"] = corsOrgins + } else { + response.headers["Access-Control-Allow-Origin"] = "*" + } + response.headers["Access-Control-Allow-Credentials"] = "true" + response.headers["Access-Control-Max-Age"] = "3600" + response.headers["Access-Control-Allow-Methods"] = "GET,POST,PUT,DELETE,OPTIONS,HEAD" + response.headers["Access-Control-Allow-Headers"] = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, Admin-Token, App-Token" + chain.filter(exchange.mutate().request(request.mutate().build()).build()) + } + } +} \ No newline at end of file