1. 程式人生 > >Spring Security 入門(二)

Spring Security 入門(二)

rda inf user 自動 異常 用戶 use ESS token

Spring Security 入門(一)中說到,Spring Security執行流程第一步是容器啟動時加載系統資源與權限列表,第二步是WEB容器啟動時加載攔截器鏈,並介紹了自定義攔截器的方法。接下來第三步步就是用戶登錄。介紹下用戶登錄的流程:

  1. 獲取用戶名和密碼,並放入一個 UsernamePasswordAuthenticationToken 實例中(Authentication接口的一個實例);
  2. 這個token被傳遞到一個 AuthenticationManager 實例中進行驗證;
  3. 若驗證成功, AuthenticationManager返回一個所有字段都被賦值的 Authentication 對象實例,若失敗則被AppFilterSecurityInterceptor
    攔截返回登錄頁面;
  4. 通過調用 SecurityContextHolder.getContext().setAuthentication(…)創建安全上下文,通過返回的驗證對象進行傳遞。
  5. 登陸後,每次訪問資源都會被AppFilterSecurityInterceptor這個自定義攔截器攔截,執行doFilter方法,首先調用SecurityMetadataSource實例的getAttributes方法獲取被攔截url所需的權限,再調用AccessDecisionManager實例decide方法判斷用戶是否有權限。若有權限則返回,代表用戶可以訪問,執行下一個攔截器;若沒有權限,則拋出異常,自動跳轉權限不足頁面(配置文件上配的)。

  下面是網上找的一張Spring Security的執行流程圖:技術分享圖片

Spring Security 入門(二)