From af14ee63d03dbc5364a5c0f6c74e3b1a089644c7 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Thu, 29 Jun 2023 21:49:30 +0800 Subject: [PATCH] Update CorsFilterConfiguration to make sure corsFilter has the HIGHEST_PRECEDENCE --- ...ration.java => CorsFilterConfiguration.java} | 17 ++++++++++++----- .../common/web/WebCommonAutoConfiguration.java | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) rename commons/web-common/src/main/java/com/schbrain/common/web/{DefaultCorsConfiguration.java => CorsFilterConfiguration.java} (62%) diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/DefaultCorsConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/CorsFilterConfiguration.java similarity index 62% rename from commons/web-common/src/main/java/com/schbrain/common/web/DefaultCorsConfiguration.java rename to commons/web-common/src/main/java/com/schbrain/common/web/CorsFilterConfiguration.java index 9ba5e1f..24ede8d 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/DefaultCorsConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/CorsFilterConfiguration.java @@ -1,9 +1,13 @@ package com.schbrain.common.web; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.web.servlet.ConditionalOnMissingFilterBean; +import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.*; +import org.springframework.core.Ordered; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; import java.time.Duration; @@ -13,7 +17,7 @@ import java.time.Duration; * @since 2023-06-26 */ @Configuration(proxyBeanMethods = false) -public class DefaultCorsConfiguration { +public class CorsFilterConfiguration { @Bean @ConditionalOnMissingBean @@ -37,9 +41,12 @@ public class DefaultCorsConfiguration { } @Bean - @ConditionalOnMissingBean - public CorsFilter defaultCorsFilter(UrlBasedCorsConfigurationSource corsConfigurationSource) { - return new CorsFilter(corsConfigurationSource); + @ConditionalOnMissingFilterBean + public FilterRegistrationBean defaultCorsFilter(UrlBasedCorsConfigurationSource configurationSource) { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + registrationBean.setFilter(new CorsFilter(configurationSource)); + registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); + return registrationBean; } } \ No newline at end of file diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java index a50d46a..aef1b8d 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java @@ -23,7 +23,7 @@ import java.util.List; @AutoConfiguration @ConditionalOnWebApplication(type = Type.SERVLET) @EnableConfigurationProperties(WebProperties.class) -@Import({AuthenticationConfiguration.class, ExceptionHandingConfiguration.class, ServletComponentConfiguration.class, DefaultCorsConfiguration.class}) +@Import({AuthenticationConfiguration.class, ExceptionHandingConfiguration.class, ServletComponentConfiguration.class, CorsFilterConfiguration.class}) public class WebCommonAutoConfiguration { @Bean -- GitLab