SpringSecurity(十四)—RememberMe功能实现

SpringSecurity(十四)—RememberMe功能实现

一.使用理由

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

二.实现步骤

1.添加依赖(jdbc和mysql)

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

<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数据库

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对象

@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中添加下面配置内容。

  @Autowired
  private MyAuthImpl myAuth;
  @Autowired
  private PersistentTokenRepository getPersistentTokenRepository;
     //加入rememberMe的功能
        http.rememberMe()
                .userDetailsService(myAuth)
                .tokenRepository(getPersistentTokenRepository)
        

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

<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周时间。但是可以通过设置状态有效时间,即使项目重新启动下次也可以正常登录。

//remember Me
http.rememberMe()
        .tokenValiditySeconds(120)//单位:秒
        .tokenRepository(repository)
        .userDetailsService(userDetailsServiceImpl);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2350.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 微信公众号开发基本流程

    微信公众号开发基本流程背景:过年前后做了个微信公众号项目,已经过去一段时间了,抽空回忆总结下基本流程吧,不然很快估计自己就忘了。。微信公众平台官网:https://mp.weixin.qq.com文章目录一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1.开发者文档2.在线接口调试工具3.web开发者工具4.公众平台测试账号四、细读开发者文档五、开发流程重点解析1.开发环境准备2.服务器基本配置3….

  • 基于近邻的协同过滤算法

    基于近邻的协同过滤算法这节课我们来学习K近邻在推荐系统中的应用,你将完成本课程的第一个实战项目:基于KNN的电影推荐系统!为了使你能够顺利地完成实战内容,我们先了解一下推荐系统中的基础知识。基于近邻用户的协同过滤假定有一个场景:某个周日的下午,你感觉很无聊,然后从电脑上打开了一个视频网站,想看下最近有什么好看的电影。然而你发现网站上的热门电影基本都看过,其他的电影又太多,不知道该看什么。想使用搜索框去查一下,但是又不知道该搜什么关键词,这个时候你的内心很焦灼,总不能挨个去尝试吧,那时间成本也太大了…仔细想想还是有办法的,那

  • h5网站模板_超全超实用的80个模板网站,我全部整理在这里了「建议收藏」

    h5网站模板_超全超实用的80个模板网站,我全部整理在这里了「建议收藏」如果你喜欢本文章,欢迎关注,评论和转发,谢谢!模板网站,可谓是当代最受欢迎的网站类型之一,只要提供的足够新颖能够满足需求,必然成为懒癌青年们的最爱。这些网站深受喜爱的原因是:大家想要实现某种设计需求,但窘于自己技术没达到,时间来不及现学现卖等诸多因素,反正就是做不出来。正当你焦头烂耳临近崩溃的时候,别人告诉你有现成又好看的模板,想问又有谁能拒绝呢?当然,模板网站不一定全是免费的,都需要你付出一些东…

  • centos修改IP_项目废标能否随便换代理公司

    centos修改IP_项目废标能否随便换代理公司直接上代码:varsettings=newCefSettings();settings.CachePath="cache";settings.CefCommandLineArgs.Add("proxy-server",ProxyAddress);Cef.Initialize(settings);

  • android倒计时功能的实现(CountDownTimer)[通俗易懂]

    android倒计时功能的实现(CountDownTimer)[通俗易懂]在逛论坛的时候,看到一个网友提问,说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成一个方便的类调用。    查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。         下面是官方给的一个小例子:ne

  • MySQL数据库基础知识点总结

    MySQL数据库基础知识点总结1数据库简介数据库(Database)就是按照数据结构来组织,存储和管理数据的仓库专业的数据库是专门对数据进行创建,访问,管理,搜索等操作的软件,比起我们自己用文件读写的方式对象数据进行管理更加的方便,快速,安全1.1作用对数据进行持久化的保存方便数据的存储和查询,速度快,安全,方便可以处理并发访问更加安全的权限管理访问机制1.2数据库类型1.3常见的数据库类型常见数据库类型分两大类,一类是关系型数据库。另一类是非关系型数据库。关系型数据库:MySQL,Oracle,P

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号