spring security采用基于持久化 token 的方法实现的remember me功能

采用该方法相较于简单加密方式安全一些。具体的原理见 http://wiki.jikexueyuan.com/project/spring-security/remember-me.html 
一、建立存储token的表persistent_logins
CREATE TABLE persistent_logins (
  username varchar(64) not null,
  series varchar(64) not null,
  token varchar(64) not null,
  last_used timestamp not null,
  PRIMARY KEY (series)
);

因为我们采用的是JdbcTokenRepositoryImpl,所以表名以及字段采用的都是官方文档中的。

二、修改SecurityConfig配置
.and()
   .rememberMe().tokenRepository(persistentTokenRepository())
   .tokenValiditySeconds(1209600);
 
@Resource
private DataSource dataSource;
 
//如果采用持久化 token 的方法则需要指定保存token的方法
    @Bean
    public PersistentTokenRepository persistentTokenRepository() {
        JdbcTokenRepositoryImpl db = new JdbcTokenRepositoryImpl();
        db.setDataSource(dataSource);
        return db;
    }

三、即可进行测试了

观察数据库,可以发现当使用remember me方式登录以后,token值会被修改

posted @ 2017-03-23 16:51  飞天0407  阅读(5842)  评论(0编辑  收藏  举报