天天看點

SpringBoot——》過濾器排除指定路徑一、定義排除指定路徑二、實作排除指定路徑

參考:總結——》【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);
        }
    }
}
           

繼續閱讀