5. Spring Boot + Spring Security 记住我功能

人理解:集成spring security框架,只需要简单的配置即可
基本流程:
浏览器认证用户名密码请求,认证成功后,有一个TOkenRepository 来保存用户名和密码,并且存储到自动的数据库中,下次用户再规定时间内登陆用户就直接从记住过滤器中读取Cookie中的Token用户名,然后通过通过T欧肯Repository 用户名去访问DB 数据库,并判断是否跟数据库中的数据是否一致,并且返回UserDetailsService

5. Spring Boot + Spring Security 记住我功能

  1. 设置记住我5. Spring Boot + Spring Security 记住我功能的过期时间为一天,
    5. Spring Boot + Spring Security 记住我功能
  2. 配置文件BrowserSecurityConfig.java
    5. Spring Boot + Spring Security 记住我功能
protected void configure(HttpSecurity http) throws Exception {
		
		ValidateCodeFilter validateCodeFilter = new ValidateCodeFilter();
		validateCodeFilter.setAuthenticationFailureHandler(imoccAuthenticationFailUrlHandler);
		validateCodeFilter.setSecurityProperties(securityProperties);
		validateCodeFilter.afterPropertiesSet();
		
		http.addFilterBefore(validateCodeFilter,UsernamePasswordAuthenticationFilter.class)//validatecodeFilter过滤器加载到用户名密码过滤器校验的前面
		    .formLogin()//表单认证
			.loginPage("/authentication/require")//添加自定义登陆界面
			.loginProcessingUrl("/authentication/from")//这个URL用UsernamePasswordAuthenticationFilter来处理
			.successHandler(imoccAuthenticationSuccessHandler)
			.failureHandler(imoccAuthenticationFailUrlHandler)
			.and()
		//配置记住我
			.rememberMe()
			.tokenRepository(persistentTokenRepository())
			.tokenValiditySeconds(securityProperties.getBrowser().getRemeberMeSeconds())
			.userDetailsService(userDetailsService)
		//http.httpBasic()//弹出框认证
			.and()
			.authorizeRequests()//对请求做一个授权
			.antMatchers("/authentication/require"
					,securityProperties.getBrowser().getLoginPage()
					,"/code/image").permitAll()//访问这个页面的时候不需要授权
			.anyRequest()//任何请求
			.authenticated()//身份认证
			.and()
			.csrf().disable();//关闭跨站请求伪造
	}