Spring Security 为网站配置 “记住我” 功能

  1. 基于数据库的记住我
    1. 创建表
    2. 添加
    3. 修改安全配置类,开启记住我功能
    4. 前端如何处理

基于数据库的记住我

创建表

CREATE TABLE `persistent_logins` (
 `username` varchar(64) NOT NULL,
 `series` varchar(64) NOT NULL,
 `token` varchar(64) NOT NULL,
 `last_used` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
 PRIMARY KEY (`series`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加

@Bean
public PersistentTokenRepository persistentTokenRepository(){
    JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
    // 赋值数据源
    jdbcTokenRepository.setDataSource(dataSource);
    // 自动创建表,第一次执行会创建,以后要执行就要删除掉!
    jdbcTokenRepository.setCreateTableOnStartup(true);
    return jdbcTokenRepository;
}

修改安全配置类,开启记住我功能

http
// 开启记住我功能
.rememberMe()
.tokenValiditySeconds(10) // 默认 2 周时间。但是可以通过设置状态有效时间,即使项目重新启动下次也可以正常登录。
.tokenRepository(tokenRepository)

前端如何处理

除了提交 username、password,还要追加 remember-me(不能改为其他字符)


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:Spring Security 为网站配置 “记住我” 功能

字数:185

本文作者:夏来风

发布时间:2021-06-07, 23:00:00

原始链接:http://www.demo1024.com/blog/spring-security-remember-me/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。