Spring Boot ,Spring Security的Filter在Tomcat正常,部署在Weblogic 12c Filter順序出錯,導致攔截許可權問題
阿新 • • 發佈:2019-02-11
於是將 @EnableWebSecurity(debug=true) debug開啟,發現列印的Log 的 Security filter chain: [] 確實沒有MyFilterSecurityInterceptor,可是為啥還是進入到此MyFilterSecurityInterceptor,當時也沒多想,以為weblogic的bug,上百度,google 查看了下,說需要重寫SpringBootServletInitializer的onStartup(ServletContext
servletContext) ,查看了 SpringBootServletInitializer的方法,也不知道從何寫起,於是在原始碼中打斷點追蹤程式碼,發現只要是 實現了 Filter的類 ,並且 @Component 註解的,都進入 org.springframework.boot.web.servlet.AbstractFilterRegistrationBean.onStartup(ServletContext) 方法,被 FilterRegistration.Dynamic added = servletContext.addFilter(name,
filter); addFilter新增到 servletContext中,難道系統對Filter的Bean預設註冊麼,經過搜尋,果然是預設Filter自動註冊, spring
boot官方文件說明預設情況下對
@WebServlet
, @WebFilter
,
and @WebListener
以及
@Bean,@Component 這些只要是implements Filter的類,自動新增,預設的過濾路徑為 /* 。