SpringSecurity实现自动登录

        在日常的上网中,各种网站需要登陆之后才能使用,而频繁的输入用户名和密码也是够令人烦恼的。那么自动登录就解决了这一痛点,就比如登录qq邮箱时就有这一选项。

今天正好学到使用spring security可以实现这一功能,因此前来记录一下。

 简而言之,当用户在第一次登陆之后spring security会生成一个加密的字符串存放在cookie中,同时在数据库中也会存放加密字符串和用户的信息加密字符串。等下一次访问时就会比较cookie与数据库之间的数据,如果一致那么就能免去登录了。

 具体代码实现

实际上在数据库中存放信息的表security能自动帮我们生成,这里我们自己手动建表不用自动生成。

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;

接下来在配置类中注入数据源并且配置对象

    //注入数据源
    @Autowired
    private DataSource dataSource;
    //配置对象
    @Bean
    public PersistentTokenRepository persistentTokenRepository() {
        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
        jdbcTokenRepository.setDataSource(dataSource);
        return jdbcTokenRepository;
    }

 在 protected void configure(HttpSecurity http) 方法中配置如下,重点就是rememberMe()方法

 然后在前端登录页使用一个单选框来设置需不需要开启自动登录

 重点是这个checkbox的name属性必须设置为remember-me,这样spring security才能自动识别

此时登陆第一次之后,就算关闭浏览器或者是将服务器重启,只要在设置的有效时间之内再次发起请求都不需要再次登录了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值