参考:总结——》【Java】
一、定义排除指定路径
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestFilterRegistrationBean{
@Bean
public FilterRegistrationBean<TestFilter> RegistTest1(){
//通过FilterRegistrationBean实例设置优先级可以生效
FilterRegistrationBean<TestFilter> bean = new FilterRegistrationBean<TestFilter>();
bean.setFilter(new TestFilter());//注册自定义过滤器
bean.setName("flilter");//过滤器名称
bean.addUrlPatterns("/*");//过滤所有路径
bean.setOrder(1);//优先级,越低越优先
bean.addInitParameter("excludedUris","/api/member/login,/api/member/updateApiAuthorityCache");//需要排除的uri
return bean;
}
}
二、实现排除指定路径
import org.apache.commons.lang3.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class TestFilter implements Filter {
private String[] excludedUris;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String param = filterConfig.getInitParameter("excludedUris");
if (StringUtils.isNotBlank(param)) {
this.excludedUris = param.split(",");
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 定义表示变量 并验证用户请求URI 是否包含不过滤路径
boolean flag = false;
for (String uri:excludedUris) {
if (request.getRequestURI().equals(uri)){
flag = true;
}
}
if(flag){
System.out.println("自定义过滤器filter,拦截url:"+request.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
}
}