跳到主要内容

10、Spring Security 实战 - 记住我

前言

前面介绍了设置用户最大登录数,这节实现记住我功能。

配置数据库

记住我需要用到数据库,所以这里先配置以下Mysql数据库
添加依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

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

添加配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/security?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: 123456

实现

依旧在SpringSecurityConfig中添加以下代码

@Autowired
private DataSource dataSource;

@Bean
JdbcTokenRepositoryImpl jdbcTokenRepository() {

 
    JdbcTokenRepositoryImpl repository = new JdbcTokenRepositoryImpl();
    repository.setDataSource(dataSource);
//        repository.setCreateTableOnStartup(true);
    return repository;
}

repository.setCreateTableOnStartup(true); 在项目启动时,创建表

添加记住我配置

http.rememberMe()
.tokenRepository(jdbcTokenRepository())
.tokenValiditySeconds(60 * 60 * 24 * 7);

tokenValiditySeconds(60 * 60 * 24 * 7); token有效时长

验证

启动项目,发现数据库中表已经创建完成
 
在浏览器输入http://localhost:8080,选择记住我
 
登录成功之后,查看数据库,记住我的信息已经成功存入数据库。
 
紧接着,重新启动项目,访问http://localhost:8080/admin,发现访问成功
 
记住我功能已经实现。