解決Springboot @WebFilter攔截器未生效問題
阿新 • • 發佈:2020-10-08
問題描述
@WebFilter(filterName = “ssoFilter”,urlPatterns = “/*”)
未生效攔截器
解決方法
在springboot啟動類上新增
@ServletComponentScan(basePackages = “full.package.path”)
路徑替換為@WebFilter所在包
補充知識:在spring boot中使用@WebFilter配置filter(包括排除URL)
我就廢話不多說了,大家還是直接看程式碼吧~
@WebFilter(urlPatterns = "/*") @Order(value = 1) public class TestFilter implements Filter { private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>( Arrays.asList("/main/excludefilter","/login","/logout","/register"))); @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init-----------filter"); } @Override public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$",""); boolean allowedPath = ALLOWED_PATHS.contains(path); if (allowedPath) { System.out.println("這裡是不需要處理的url進入的方法"); chain.doFilter(req,res); } else { System.out.println("這裡是需要處理的url進入的方法"); } } @Override public void destroy() { System.out.println("destroy----------filter"); } }
@Order中的value越小,優先順序越高。
以上這篇解決Springboot @WebFilter攔截器未生效問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。