1. 基于数据库的免密登陆实现
1.1 创建表
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;
1.2 编写配置类
/**
* 配置操作数据库对象,免密登录使用
*
* @return
*/
@Bean
public PersistentTokenRepository persistentTokenRepository() {
JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
jdbcTokenRepository.setDataSource(dataSource);
// 自动创建表,第一次执行会创建,以后要执行就要删除掉!
// jdbcTokenRepository.setCreateTableOnStartup(true);
return jdbcTokenRepository;
}
// 开启记住我功能
http.rememberMe()
.tokenValiditySeconds(60 * 5) //默认 2 周时间。但是可以通过设置状态有效时间,即使项目重新启动下次也可以正常登录。
.tokenRepository(tokenRepository)
.userDetailsService(usersService);
详细配置见SpringSecurity(一)
1.3 页面添加记住我复选框
记住我:<input type="checkbox"name="remember-me"title="记住密码"/><br/>
注意:此处的name数据必须为remember-me