• 记住我 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;
        }
    }
    
    
     
  • 相关阅读:
    [已解决]import pymssql ImportError: libsybdb.so.5
    找出生成json中的error_code,并加以处理
    [转]正则匹配时对象必须为string or bytes-like object
    [转]python执行bash指令,如果指令返回错误,如何优雅的结束python程序
    group()与groups()的区别
    Unsupported major.minor version 51.0解决办法(转)
    谈谈互联网后端基础设施(转)
    java日志体系的思考(转)
    JAVA模块以及未来(转)
    使用Spring Loader或者Jrebel实现java 热部署
  • 原文地址:https://www.cnblogs.com/exmyth/p/13602704.html
Copyright © 2020-2023  润新知