客戶端發起一個請求,進入 Security 過濾器鏈。html
當到 LogoutFilter 的時候判斷是不是登出路徑,若是是登出路徑則到 logoutHandler ,若是登出成功則到 logoutSuccessHandler 登出成功處理,若是登出失敗則由 ExceptionTranslationFilter ;若是不是登出路徑則直接進入下一個過濾器。java
當到 UsernamePasswordAuthenticationFilter 的時候判斷是否爲登陸路徑,若是是,則進入該過濾器進行登陸操做,若是登陸失敗則到 AuthenticationFailureHandler 登陸失敗處理器處理,若是登陸成功則到 AuthenticationSuccessHandler 登陸成功處理器處理,若是不是登陸請求則不進入該過濾器。spring
當到 FilterSecurityInterceptor 的時候會拿到 uri ,根據 uri 去找對應的鑑權管理器,鑑權管理器作鑑權工做,鑑權成功則到 Controller 層不然到 AccessDeniedHandler 鑑權失敗處理器處理。安全
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency>
@RestController public class Hello { @RequestMapping("/hello") public String hello(){ return "hello spring security"; } }