SpringBoot Security |四、简单rememberMe

目录

一、项目实现

二、测试


一、项目实现

增加数据库表persistent_logins

DROP TABLE IF EXISTS `persistent_logins`;
CREATE TABLE `persistent_logins` (
  `username` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `series` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_used` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`series`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

创建bean  RememberMeServices服务

    @Bean
    public RememberMeServices rememberMeServices(){
        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
        jdbcTokenRepository.setDataSource(dataSource);
        PersistentTokenBasedRememberMeServices rememberMeServices =
                new PersistentTokenBasedRememberMeServices("INTERNAL_SECRET_KEY",userService,jdbcTokenRepository);
        //还可设置许多其他属性
        rememberMeServices.setCookieName("kkkkk"); //客户端cookie名
        return rememberMeServices;
    }

将bean加入配置中

        http.rememberMe().rememberMeServices(rememberMeServices()).key("INTERNAL_SECRET_KEY");

打开JdbcTokenRepositoryImpl可以看到对persistent_logins表的sql语句,表明系统会自动同步数据库。

二、测试

  • 启动服务
  • 浏览器访问 http://localhost:8001/getUser,弹出登陆界面,多了一个选项  Remember me on this computer.
  • 勾上Remember me on this computer. 输入账号密码  admin/123,点击登陆
  • 可以看到getUser接口信息
  • 重启服务
  • 浏览器访问 http://localhost:8001/getUser,直接得到接口信息,而无需登陆
  • 看数据库persistent_logins,可以看到自动生成登陆记录。

 

代码传送门

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值