Commit 673cd4b0 authored by liaozan's avatar liaozan 🏀

Change cors interceptor to cors filter

parent 337b29a9
package com.schbrain.common.web;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.*;
import org.springframework.web.filter.CorsFilter;
import java.time.Duration;
/**
* @author liaozan
* @since 2023-06-26
*/
@Configuration(proxyBeanMethods = false)
public class DefaultCorsConfiguration {
@Bean
@ConditionalOnMissingBean
public CorsConfiguration defaultCorsConfiguration() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOriginPattern(CorsConfiguration.ALL);
config.addAllowedMethod(CorsConfiguration.ALL);
config.addAllowedHeader(CorsConfiguration.ALL);
config.addExposedHeader(CorsConfiguration.ALL);
config.setMaxAge(Duration.ofDays(1));
return config;
}
@Bean
@ConditionalOnMissingBean
public CorsConfigurationSource defaultCorsConfigurationSource(CorsConfiguration corsConfiguration) {
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", corsConfiguration);
return configSource;
}
@Bean
@ConditionalOnMissingBean
public CorsFilter defaultCorsFilter(CorsConfigurationSource corsConfigurationSource) {
return new CorsFilter(corsConfigurationSource);
}
}
\ No newline at end of file
package com.schbrain.common.web; package com.schbrain.common.web;
import com.schbrain.common.web.log.RequestLoggingFilter; import com.schbrain.common.web.servlet.RequestLoggingFilter;
import com.schbrain.common.web.properties.WebProperties; import com.schbrain.common.web.properties.WebProperties;
import com.schbrain.common.web.servlet.CharacterEncodingServletContextInitializer; import com.schbrain.common.web.servlet.CharacterEncodingServletContextInitializer;
import com.schbrain.common.web.servlet.TraceIdInitializeServletListener;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter; import org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter;
...@@ -17,6 +18,12 @@ import org.springframework.web.filter.RequestContextFilter; ...@@ -17,6 +18,12 @@ import org.springframework.web.filter.RequestContextFilter;
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
public class ServletComponentConfiguration { public class ServletComponentConfiguration {
@Bean
@ConditionalOnMissingBean
public TraceIdInitializeServletListener traceIdInitializeServletListener() {
return new TraceIdInitializeServletListener();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public CharacterEncodingServletContextInitializer characterEncodingServletContextInitializer(WebProperties webProperties) { public CharacterEncodingServletContextInitializer characterEncodingServletContextInitializer(WebProperties webProperties) {
......
...@@ -3,8 +3,6 @@ package com.schbrain.common.web; ...@@ -3,8 +3,6 @@ package com.schbrain.common.web;
import com.schbrain.common.web.argument.BodyParamArgumentResolverWebMvcConfigurer; import com.schbrain.common.web.argument.BodyParamArgumentResolverWebMvcConfigurer;
import com.schbrain.common.web.properties.WebProperties; import com.schbrain.common.web.properties.WebProperties;
import com.schbrain.common.web.result.ResponseBodyHandler; import com.schbrain.common.web.result.ResponseBodyHandler;
import com.schbrain.common.web.servlet.AllowAnyOriginWithoutCredentialsCorsConfigurer;
import com.schbrain.common.web.servlet.TraceIdInitializeServletListener;
import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
...@@ -25,7 +23,7 @@ import java.util.List; ...@@ -25,7 +23,7 @@ import java.util.List;
@AutoConfiguration @AutoConfiguration
@ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnWebApplication(type = Type.SERVLET)
@EnableConfigurationProperties(WebProperties.class) @EnableConfigurationProperties(WebProperties.class)
@Import({AuthenticationConfiguration.class, ExceptionHandingConfiguration.class, ServletComponentConfiguration.class}) @Import({AuthenticationConfiguration.class, ExceptionHandingConfiguration.class, ServletComponentConfiguration.class, DefaultCorsConfiguration.class})
public class WebCommonAutoConfiguration { public class WebCommonAutoConfiguration {
@Bean @Bean
...@@ -53,16 +51,4 @@ public class WebCommonAutoConfiguration { ...@@ -53,16 +51,4 @@ public class WebCommonAutoConfiguration {
return new ResponseBodyHandler(basePackages); return new ResponseBodyHandler(basePackages);
} }
@Bean
@ConditionalOnMissingBean
public TraceIdInitializeServletListener traceIdInitializeServletListener() {
return new TraceIdInitializeServletListener();
}
@Bean
@ConditionalOnMissingBean
public AllowAnyOriginWithoutCredentialsCorsConfigurer allowAnyOriginWithoutCredentialsCorsConfigurer() {
return new AllowAnyOriginWithoutCredentialsCorsConfigurer();
}
} }
\ No newline at end of file
package com.schbrain.common.web.servlet;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.time.Duration;
/**
* @author liaozan
* @since 2022/11/19
*/
public class AllowAnyOriginWithoutCredentialsCorsConfigurer implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(false)
.allowedOrigins(CorsConfiguration.ALL)
.allowedHeaders(CorsConfiguration.ALL)
.allowedMethods(CorsConfiguration.ALL)
.exposedHeaders(CorsConfiguration.ALL)
.maxAge(Duration.ofHours(1).toSeconds());
}
}
\ No newline at end of file
package com.schbrain.common.web.log; package com.schbrain.common.web.servlet;
import cn.hutool.core.text.CharPool; import cn.hutool.core.text.CharPool;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
......
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