Remember Me是什么?
這個功能允許一個驗證成果的用戶能夠被系統(tǒng)記住嗡善,前次訪問未注銷辑莫,而再次訪問時,無需登錄的功能罩引。特別是當未注銷用戶關閉瀏覽器各吨,再次打開時,該功能非常有用袁铐。
實現原理:驗證通過后在用戶的瀏覽器上存儲一個加密的cookie揭蜒。再次打開瀏覽器時,如果Spring Security能夠識別出用戶提供的remember me cookie剔桨,那么用戶將不必經過登錄過程屉更,而直接被認證成功,訪問系統(tǒng)洒缀。
Spring Security實現Remember me非常簡單偶垮,只需要修改一下地方:
- 修改WebSecurityConfigurerAdapter,啟用remember me功能
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/assets/**").permitAll()
.antMatchers("/**").hasRole("USER")
.and().formLogin().loginPage("/login.jsp").permitAll().loginProcessingUrl("/login")
.and().rememberMe()//啟用remember me功能
.and().csrf().disable();
}
2.修改登錄頁面帝洪,在form表單中添加remember me參數
<input type="checkbox" name="remember-me" value="1"/>似舵,其中name必須為"remember-me"
通過以上配置即可開啟remember me功能,讀者可以通過正常登錄(選擇或者不選擇remember me)葱峡,未注銷關閉瀏覽器砚哗,再次訪問服務,來驗證開啟和關閉remember me的功能
remember me主要通過RememberMeAuthenticationFilter實現砰奕,基本流程如圖所示
代碼示例:https://github.com/wexgundam/spring.security/tree/master/ch03