Spring Security 過濾器鏈


Alias Filter Class Namespace Element or Attribute

CHANNEL_FILTER

ChannelProcessingFilter

http/intercept-url@requires-channel

SECURITY_CONTEXT_FILTER

SecurityContextPersistenceFilter

http

CONCURRENT_SESSION_FILTER

ConcurrentSessionFilter

session-management/concurrency-control

HEADERS_FILTER

HeaderWriterFilter

http/headers

CSRF_FILTER

CsrfFilter

http/csrf

LOGOUT_FILTER

LogoutFilter

http/logout

X509_FILTER

X509AuthenticationFilter

http/x509

PRE_AUTH_FILTER

AbstractPreAuthenticatedProcessingFilter

N/A

CAS_FILTER

CasAuthenticationFilter

N/A

FORM_LOGIN_FILTER

UsernamePasswordAuthenticationFilter

http/form-login

BASIC_AUTH_FILTER

BasicAuthenticationFilter

http/http-basic

SERVLET_API_SUPPORT_FILTER

SecurityContextHolderAwareRequestFilter

http/@servlet-api-provision

JAAS_API_SUPPORT_FILTER

JaasApiIntegrationFilter

http/@jaas-api-provision

REMEMBER_ME_FILTER

RememberMeAuthenticationFilter

http/remember-me

ANONYMOUS_FILTER

AnonymousAuthenticationFilter

http/anonymous

SESSION_MANAGEMENT_FILTER

SessionManagementFilter

session-management

EXCEPTION_TRANSLATION_FILTER

ExceptionTranslationFilter

http

FILTER_SECURITY_INTERCEPTOR

FilterSecurityInterceptor

http

SWITCH_USER_FILTER

SwitchUserFilter

N/A  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

每個過濾器的作用:

 1、SecurityContextPersistenceFilter(SECURITY_CONTEXT_FILTER):請求進來時,創建SecurityContext;請求結束時,清空SecurityContextHolder。

延伸閱讀:SecurityContextHolder、SecurityContext、Authentication的區別?
在SecurityContextHolder中我們保存了當前與應用交互的principal數據,Spring Security使用一個Authentication對象來保存和展示這些數據。你不需要自己手工創建一個Authentication對象,而且查詢這個對象也相當的簡單, getContext()方法返回的對象是SecurityContext接口的實例,這就是保存在ThreadLocal局部變量中的對象,你可以使用下面的代碼(在你的應用的任意位置)獲取當前認證用戶的姓名信息:
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof UserDetails) {
   String username = ((UserDetails)principal).getUsername();
} else {
   String username = principal.toString();
}    

 

2、CsrfFilter (CSRF_FILTER):在spring4這個版本中被默認開啟的一個過濾器,用於防止csrf攻擊

 

3、LogoutFilter (LOGOUT_FILTER):處理注銷請求。參考 https://blog.csdn.net/py_xin/article/details/52634880

 

4、CasAuthenticationFilter(CAS_FILTER)

 

5、UsernamePasswordAuthenticationFilter(FORM_LOGIN_FILTER):表單提交了username和password,被封裝成token進行一系列的認證,便是主要通過這個過濾器完成的,在表單認證的方法中,這是最最關鍵的過濾器。

 

6、FilterSecurityInterceptor(FILTER_SECURITY_INTERCEPTOR) : 這個過濾器決定了訪問特定路徑應該具備的權限,訪問的用戶的角色,權限是什么?訪問的路徑需要什么樣的角色和權限?這些判斷和處理都是由該類進行的。

 

7、與CAS集成,參考:https://blog.csdn.net/zh350229319/article/details/50517921

 

8、自定義攔截器,參考:https://blog.csdn.net/chaozhi_guo/article/details/46365735


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM