Spring Security(2):常用權限攔截器

Spring Security提供了很多過濾器,它們攔截Servlet請求,並將這些請求轉交給認證處理過濾器和訪問角色處理過濾器,認證用戶身份和用戶權限,以保證web資源的安全性

1c334fe7ebec56ac43833899f1a660ce.png

SecurityContextPersistenceFilter

用途:位於過濾器的頂端。

1:在執行其它過濾器之前,判斷用戶的session中是否已經存在了一個SecurityContext上下文,如果存在,就放入SecurityContextHolder中;否則則創建。

2:在執行完其它的過濾器之後,清空SecurityContextHolder中的內容,因爲SecurityContextHolder是基於ThreadLocal的。

LogoutFilter

用途:用於註銷請求。

1:在用戶發送註銷請求時,銷燬用戶的session,並清空SecurityContextHolder,重定向到註銷成功頁面。

2:與記住密碼功能結合的時候,可以清空用戶的cookie。

AbstractAuthenticationProcessingFilter

用途:處理Form登錄過濾器,與form登錄相關的所有請求都在此處理的。

1:通過用戶登錄的用戶名和密碼是否有效,如果成功就跳轉到成功頁面。

DefaultLoginPageGeneratingFilter

用途:用來生成一個默認的登錄頁面。(幾乎不用)

BasicAuthenticationFilter

用途:用來做Basic認證的。

SecurityContextHolderAwareRequestFilter

用途:包裝用戶的請求,目的是爲後面的程序提供額外的數據。

RememberMeAuthenticationFilter

用途:記住密碼功能。依賴Cookie實現。

AnonymousAuthenticationFilter

用途:保證操作的統一性,當用戶沒有登錄時,用戶操作頁面的時候爲用戶默認分配匿名用戶的權限。

ExceptionTranslationFilter

用途:針對於過濾器拋出的異常,然後將請求重定向到對應頁面或錯誤代碼,在項目中我們都會對其進行處理

SessionManagementFilter

用途:防禦回話僞造***,主要在用戶登錄成功之後,銷燬用戶的當前session,並重新生成一個session。

FilterSecurityInterceptor

用途:用戶的權限控制都包含在這個過濾器中,

1:如果用戶尚未登錄,則拋出尚未認證的異常。

2:如果用戶已經登錄,但是沒有訪問當前資源的權限,則拋出拒絕訪問的異常。

3;如果用戶已經登錄,有訪問當前資源的權限,則放進。


上面這些攔截器是按怎樣的順序執行的呢?FilterChainProxy

  安裝順序來調用一組Filter,使這些Filter既能完成認證授權的本職工作,又能享用Spring IOC的功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章