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

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

1c334fe7ebec56ac43833899f1a660ce.png

SecurityContextPersistenceFilter安全

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

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

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

LogoutFilterspa

用途:用於註銷請求。orm

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

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

AbstractAuthenticationProcessingFilterget

用途:處理Form登陸過濾器,與form登陸相關的全部請求都在此處理的。

1:經過用戶登陸的用戶名和密碼是否有效,若是成功就跳轉到成功頁面。

DefaultLoginPageGeneratingFilter

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

BasicAuthenticationFilter

用途:用來作Basic認證的。

SecurityContextHolderAwareRequestFilter

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

RememberMeAuthenticationFilter

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

AnonymousAuthenticationFilter

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

ExceptionTranslationFilter

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

SessionManagementFilter

用途:防護回話僞造***,主要在用戶登陸成功以後,銷燬用戶的當前session,並從新生成一個session。

FilterSecurityInterceptor

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

1:若是用戶還沒有登陸,則拋出還沒有認證的異常。

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

3;若是用戶已經登陸,有訪問當前資源的權限,則放進。


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

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

相關文章
相關標籤/搜索