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);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringMVC执行流程和原理「建议收藏」

    SpringMVC执行流程和原理「建议收藏」SpringMVC流程:01、用户发送出请求到前端控制器DispatcherServlet。02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。03、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。04、Dispatche…

    2022年6月28日
    25
  • ASP数组排序_字符数组

    ASP数组排序_字符数组=====================================作者:80端口,阿里西西时间:2005-12-23作用:对数据进行重新排序=====================================FunctionNewOrder(sz)Dimali,icount,i,ii,j,itempali=split(sz,”,”)icount=UBound(ali)F

    2025年8月7日
    7
  • 书单(含资源链接,快撸!)

    书单(含资源链接,快撸!)撸资源python开发笨办法”学Python(第3版)Python.编写高质量Python代码的59个有效方法提取码:3vk4编写高质量代码改善python程序的91个建议利用Pytho

    2022年8月4日
    11
  • 5G学习(三)-SSB与初始接入

    5G学习(三)-SSB与初始接入SSB概念SSB是同步信号和PBCH块(SynchronizationSignalandPBCHblock)组合在一起的。它由主同步信号(PrimarySynchronizationSignals,简称PSS)、辅同步信号(SecondarySynchronizationSignals,简称SSS)、PBCH三部分共同组成。SSB频域位置可以从图中看到,SSB时域上共占用4个OFDM符号,频域共占用240个子载波(20个PRB),PSS位于符号0的中间127个子载波。SSS

    2022年6月17日
    495
  • 什么是UE4(学ue4还是unity)

    对于游戏的来说,最能够影响它的性能的,便是游戏程序的开发、维护工作了。游戏开发、维护工作都是通过游戏开发引擎来完成的,而U3D和UE4正是如今行业主流的两款游戏开发引擎。不同的游戏开发引擎在不同的游戏中使用,那么具体的u3d和ue4的区别是什么?小编常被想要进入游戏行业的同学问到,学U3D和UE4哪个更好?其实这主要是看你自己的就业倾向。下面小编就从两款游戏开发引擎的具体区别来讲讲我们该如何选择。…

    2022年4月14日
    59
  • linux下查看java进程日志,linux 下查看java进程[通俗易懂]

    linux下查看java进程日志,linux 下查看java进程[通俗易懂]Maven&lpar;二&rpar;使用eclipse创建maven多模块项目maven作为一种自动化构建工具,在现在的企业应用开发中运用非常普遍.企业项目一般都比较大,多采用maven管理的多模块项目,下面直接上创建步骤一.创建一个maven项目AndroidActivity的生命周期详解应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监…

    2022年8月24日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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