美文网首页
SpringSecurity添加记住我功能

SpringSecurity添加记住我功能

作者: 青衣敖王侯 | 来源:发表于2019-06-08 14:27 被阅读0次

   上一篇文章中我们对SpringSecurity图片验证码
  我们在访问很多网站的时候,会看到很长一段时间可以不用登录,那这个功能其实就是记住我功能,这篇文章将使用SpringSecurity做到记住我功能,并且告知大家其中的原理,让大家即使不通过SpringSecurity也能够自己实现记住我功能。

1.原理

1.1UsernamePasswordAuthenticationFilter接受到认证请求

当认证成功后,会调用一个叫做RemeberMeService的服务,这个是SpringSecurity提供的服务,它主要做两件事情,生成一个Token,然后分别写入数据库和Cookie中去,如下图代码所示:


1.2第二次服务请求

此时是有RememberMeAuthenticationFilter来处理该请求,Filter会读取Cookie中的Token,然后继续由RemeberMeService的TokenRepository来查找数据库中的相关信息,如果查询到了,此时会调用UserDetailsService来获取用户信息。RememberMeAuthenticationFilter所处的位置是在倒数第二个Filter的位置。只要前面的Filter过滤掉了,都会经过它来判断是否需要免密登录。


2.实战

2.1增加记住我功能的时间


设置为1小时

2.2增加配置


添加一个存储token的repository,设置token的失效时间

2.3添加repositoryBean

@Bean
    public PersistentTokenRepository persistentTokenRepository() {
        JdbcTokenRepositoryImpl tokenRepository = new JdbcTokenRepositoryImpl();
        tokenRepository.setDataSource(dataSource);
        tokenRepository.setCreateTableOnStartup(true);
        return tokenRepository;
    }

这个Bean会被2.2使用到,而且还会在数据库中生成persistent_logins表,用于登录成功后的信息记录


2.4测试


第一次登录成功后,数据表中会添加信息



此时我们重启应用,直接访问user,会看到不用输入密码也能得到结果



记住我功能Get了吗~~

相关文章

网友评论

      本文标题:SpringSecurity添加记住我功能

      本文链接:https://www.haomeiwen.com/subject/hrdixctx.html