上一篇講了UserDetails(規范用戶信息)和UserDetailService(獲取用戶信息)
這篇 來講獲取用戶信息后該如何認證,它的認證流程是什么?
Spring Security 是一個安全管理框架,它的安全是基於一條長長的過濾器鏈,當用戶發出一個請求時,首先會進入Security 的過濾器鏈中(之后我會更新一篇關於Security 過濾器鏈的詳細文章,這篇就只就AuthenticationManager進行解析),當進入UsernamePasswordAuthenticationFitel這個過濾器的時候,會判斷是否是登錄路徑,如果是,配置AuthenticationManagerBuilder會讓Security自動構建一個認證管理器
AuthenticationManager。以下是認證的配置:
public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired BookService bookService; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(bookService).passwordEncoder(new BCryptPasswordEncoder()); }
UserDetailService會根據用戶傳過來的用戶名查找一個用戶,passwordEncoder用於密碼的加密和比對,如果認證成功,則會返回一個Authentication對象