記住我 token保存到數據庫


這里使用jpa+mysql

     <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> 
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/fly-demo?serverTimezone=UTC&useUnicode=yes&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

設置配置rememberme

import javax.sql.DataSource; @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private AuthenticationSuccessHandler flyAuthenticationSuccessHandler; @Autowired private AuthenticationFailureHandler flyAuthenticationFailureHandler; @Autowired private SecurityProperties securityProperties; @Autowired private PasswordEncoder passwordEncoder; @Bean public PasswordEncoder setPasswordEncoder() { return new BCryptPasswordEncoder(); } @Autowired private DataSource dataSource; @Bean public PersistentTokenRepository persistentTokenRepository(){ JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl(); // tokenRepository.setCreateTableOnStartup(true); tokenRepository.setDataSource(dataSource); return tokenRepository; } @Override protected void configure(HttpSecurity http) throws Exception { ValidateCodeFilter codeFilter = new ValidateCodeFilter(flyAuthenticationFailureHandler); http .addFilterBefore(codeFilter, UsernamePasswordAuthenticationFilter.class) .formLogin() .loginPage("/authentication/request") .loginProcessingUrl("/authentication/form") .successHandler(flyAuthenticationSuccessHandler) .failureHandler(flyAuthenticationFailureHandler) .and() .rememberMe() .tokenRepository(persistentTokenRepository()) .tokenValiditySeconds(securityProperties.getBrowser().getRememberMe()) .userDetailsService(userDetails()) .and() .authorizeRequests() .antMatchers("/authentication/request", securityProperties.getBrowser().getLoginPage(), "/captcha") .permitAll() .anyRequest().authenticated() .and().csrf().disable(); } @Bean public UserDetailsService userDetails(){ InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withUsername("user").password(passwordEncoder.encode("123")).roles("USER").build()); return manager; } } 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM