Spring Security 入門(二)
阿新 • • 發佈:2018-10-27
rda inf user 自動 異常 用戶 use ESS token
Spring Security 入門(一)中說到,Spring Security執行流程第一步是容器啟動時加載系統資源與權限列表,第二步是WEB容器啟動時加載攔截器鏈,並介紹了自定義攔截器的方法。接下來第三步步就是用戶登錄。介紹下用戶登錄的流程:
- 獲取用戶名和密碼,並放入一個 UsernamePasswordAuthenticationToken 實例中(Authentication接口的一個實例);
- 這個token被傳遞到一個 AuthenticationManager 實例中進行驗證;
- 若驗證成功, AuthenticationManager返回一個所有字段都被賦值的 Authentication 對象實例,若失敗則被AppFilterSecurityInterceptor
攔截返回登錄頁面; - 通過調用 SecurityContextHolder.getContext().setAuthentication(…)創建安全上下文,通過返回的驗證對象進行傳遞。
- 登陸後,每次訪問資源都會被AppFilterSecurityInterceptor這個自定義攔截器攔截,執行doFilter方法,首先調用SecurityMetadataSource實例的getAttributes方法獲取被攔截url所需的權限,再調用AccessDecisionManager實例decide方法判斷用戶是否有權限。若有權限則返回,代表用戶可以訪問,執行下一個攔截器;若沒有權限,則拋出異常,自動跳轉權限不足頁面(配置文件上配的)。
下面是網上找的一張Spring Security的執行流程圖:
Spring Security 入門(二)