首页 > 编程语言 > 详细

Spring Security记住我功能

时间:2020-11-07 23:31:23      阅读:43      评论:0      收藏:0      [点我收藏+]

1.引入数据库依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2.在application.yml中配置数据源

spring:
  # 数据源配置
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.121.200:3306/study-security?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8
  #mysql8版本以上驱动包指定新的驱动类
  driver-class-name: com.mysql.cj.jdbc.Driver

3.创建数据库

4.使用 JdbcTokenRepository 实现类

// 记住我功能
@Autowired
DataSource dataSource;
@Bean
public JdbcTokenRepositoryImpl jdbcTokenRepository() {
    JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
    jdbcTokenRepository.setDataSource(dataSource);
    // 是否启动时自动创建表,第一次启动创建就行,后面启动把这个注释掉,不然报错已存在表
    //jdbcTokenRepository.setCreateTableOnStartup(true);
    return jdbcTokenRepository;
}

5.安全配置 SpringSecurityConfig#configure(HttpSecurity http)

@Override
protected void configure(HttpSecurity http) throws Exception {
    System.out.println("用户认证");
     http.httpBasic() // 采用 httpBasic认证方式
    http.addFilterBefore(imageCodeValidateFilter, UsernamePasswordAuthenticationFilter.class)
            .formLogin() // 表单登录方式
            .loginPage(authenticationProperties.getLoginPage())   //配置登录页面
            .loginProcessingUrl(authenticationProperties.getLoginProcessingUrl())  //登录表单提交处理url,默认是/login
            .usernameParameter(authenticationProperties.getUsernameParameter())
            .passwordParameter(authenticationProperties.getPasswordParameter())
            .successHandler(customAuthenticationSuccessHandler) // 认证成功处理器
            .failureHandler(customAuthenticationFailureHandler) // 认证失败处理器
            .and()
            .authorizeRequests() // 认证请求
            .antMatchers(authenticationProperties.getLoginPage(), "/code/image").permitAll()
            .anyRequest().authenticated() //所有访问该应用的http请求都要通过身份认证才可以访问
    .and()
    .rememberMe()   //记住我
    .tokenRepository(jdbcTokenRepository()) //报错登录信息
    .tokenValiditySeconds(60*60*24*7) //记住我有效时长(秒)
    ; // 注意不要少了分号
}

6.修改mengxuegu-security-web 模块中的 login.html 记住我的 name="remember-me"

<input type="checkbox" name="remember-me" > 记住我

Spring Security记住我功能

原文:https://www.cnblogs.com/xl4ng/p/13942810.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!