前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringSecurity(十四)—RememberMe功能实现

SpringSecurity(十四)—RememberMe功能实现

作者头像
全栈程序员站长
发布2021-04-07 10:16:04
3720
发布2021-04-07 10:16:04
举报
文章被收录于专栏:全栈程序员必看

一.使用理由

Spring Security 中Remember Me为“记住我”功能,用户只需要在登录时添加remember-me复选框,取值为true。Spring Security会自动把用户信息存储到数据源中,以后就可以不登录进行访问。

二.实现步骤

1.添加依赖(jdbc和mysql)

Spring Security实现Remember Me 功能时底层实现依赖Spring-JDBC,所以需要添加jdbc的依赖,如果使用的是mybatis框架,只要导入mybatis的启动器即可,同时还需添加mysql的驱动

代码语言:javascript
复制
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2.配置数据源

在application.properties或application.yml中配置数据源。请确保数据库中已经存在test数据库

代码语言:javascript
复制
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false
    username: root
    password: admin

3.编写配置

新建com.yrp.config.RememberMeConfig类,并创建Bean对象

代码语言:javascript
复制
@Configuration
public class RememberMeConfig {
   
    @Autowired
    private DataSource dataSource;
    @Bean
    public PersistentTokenRepository getPersistentTokenRepository(){
   
        JdbcTokenRepositoryImpl jdbcTokenRepository=new JdbcTokenRepositoryImpl();
        jdbcTokenRepository.setDataSource(dataSource);
        //自动建表,第一次启动时需要,第二次启动时注释掉
        //jdbcTokenRepository.setCreateTableOnStartup(true);
        return jdbcTokenRepository;

    }
}

4.修改SecurityConfig

在SecurityConfig中添加PersistentTokenRepository和UserDetailsService实现类对象,并自动注入。 在configure中添加下面配置内容。

代码语言:javascript
复制
  @Autowired
  private MyAuthImpl myAuth;
  @Autowired
  private PersistentTokenRepository getPersistentTokenRepository;
     //加入rememberMe的功能
        http.rememberMe()
                .userDetailsService(myAuth)
                .tokenRepository(getPersistentTokenRepository)

5.在客户端页面中添加复选框

代码语言:javascript
复制
<form action = "/login" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="text" name="password"/><br/>
 记住我:   <input type="checkbox" name="remember-me" value="true"/> <br/>
    <input type="submit" value="登录"/>
</form>

6.有效时间

默认2周时间。但是可以通过设置状态有效时间,即使项目重新启动下次也可以正常登录。

代码语言:javascript
复制
//remember Me
http.rememberMe()
        .tokenValiditySeconds(120)//单位:秒
        .tokenRepository(repository)
        .userDetailsService(userDetailsServiceImpl);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.使用理由
  • 二.实现步骤
    • 1.添加依赖(jdbc和mysql)
      • 2.配置数据源
        • 3.编写配置
          • 4.修改SecurityConfig
            • 5.在客户端页面中添加复选框
              • 6.有效时间
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档