package org.dromara.common.web.config;
|
|
import jakarta.servlet.DispatcherType;
|
import org.dromara.common.web.config.properties.XssProperties;
|
import org.dromara.common.web.filter.RepeatableFilter;
|
import org.dromara.common.web.filter.XssFilter;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
import org.springframework.context.annotation.Bean;
|
|
/**
|
* Filter配置
|
*
|
* @author Lion Li
|
*/
|
@AutoConfiguration
|
@EnableConfigurationProperties(XssProperties.class)
|
public class FilterConfig {
|
|
@Bean
|
@ConditionalOnProperty(value = "xss.enabled", havingValue = "true")
|
public FilterRegistrationBean<XssFilter> xssFilterRegistration() {
|
FilterRegistrationBean<XssFilter> registration = new FilterRegistrationBean<>();
|
registration.setDispatcherTypes(DispatcherType.REQUEST);
|
registration.setFilter(new XssFilter());
|
registration.addUrlPatterns("/*");
|
registration.setName("xssFilter");
|
registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE + 1);
|
return registration;
|
}
|
|
@Bean
|
public FilterRegistrationBean<RepeatableFilter> someFilterRegistration() {
|
FilterRegistrationBean<RepeatableFilter> registration = new FilterRegistrationBean<>();
|
registration.setFilter(new RepeatableFilter());
|
registration.addUrlPatterns("/*");
|
registration.setName("repeatableFilter");
|
registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);
|
return registration;
|
}
|
|
}
|