因项目是前后端分离,且后端使用 jar 方式启动,传统的 web.xml 方式注入 Filter 的方式已经做不到了,只能使用手动注入
import org.xxxxx.AuthenticationFilter;
import org.xxxxx.HttpServletRequestWrapperFilter;
import org.xxxxx.Cas20ProxyReceivingTicketValidationFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<AuthenticationFilter> registerCASFilter() {
FilterRegistrationBean<AuthenticationFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new AuthenticationFilter());
registration.addUrlPatterns("/app/ssoLogin");
registration.setName("CASFilter");
Map<String, String> initParams = new LinkedHashMap<>();
initParams.put("casServerLoginUrl", "xxxx");
initParams.put("serverName", serverName);
registration.setInitParameters(initParams);
return registration;
}
private static final String serverName = "http://xxxx";
@Bean
public FilterRegistrationBean<Cas20ProxyReceivingTicketValidationFilter> registerCas20ProxyReceivingTicketValidationFilter() {
FilterRegistrationBean<Cas20ProxyReceivingTicketValidationFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new Cas20ProxyReceivingTicketValidationFilter());
registration.addUrlPatterns("/app/ssoLogin");
registration.setName("CAS Validation Filter");
Map<String, String> initParams = new LinkedHashMap<>();
initParams.put("casServerUrlPrefix", "xxxx");
initParams.put("serverName", serverName);
initParams.put("encoding", "UTF-8");
registration.setInitParameters(initParams);
return registration;
}
@Bean
public FilterRegistrationBean<HttpServletRequestWrapperFilter> registerHttpServletRequestWrapperFilter() {
FilterRegistrationBean<HttpServletRequestWrapperFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new HttpServletRequestWrapperFilter());
registration.addUrlPatterns("/app/ssoLogin");
registration.setName("CAS HttpServletRequest Wrapper Filter");
return registration;
}
}