springsecurity-记住我功能实现

springsecurity-记住我功能实现,第1张

springsecurity-记住我功能实现

项目地址:https://gitee.com/xxxiaowu/springsecurity-mybatis

*记住我功能在网站上是比较常见的功能,它大致就是我们在勾选了记住我这个按钮,在多长时间之内,用户不需要登陆就可以访问资源。

这个功能在SpringSecurit 里边大致就是,我们点击记住我之后,Spring Security会生成一个token标识,然后将该token标识持久化到数据库,并且生成一个与该token相对应的cookie返回给浏览器。当用户过段时间再次访问系统时,如果该cookie没有过期,Spring Security便会根据cookie包含的信息从数据库中获取相应的token信息,然后帮用户自动完成登录 *** 作

在application.yaml中配置数据源

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/security?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456

导入相关的依赖

 

     org.springframework.boot
     spring-boot-starter-web
 

 
 
     mysql
     mysql-connector-java
 

 
 
     org.mybatis.spring.boot
     mybatis-spring-boot-starter
     2.1.4
 
 
   
 
     org.springframework.boot
     spring-boot-starter-security
 

然后在SecurityConfig中配置token持久化对象

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    private DataSource dataSource;

    @Autowired
    private UserService userService;

    public PersistentTokenRepository persistentTokenRepository(){
        JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
        jdbcTokenRepository.setDataSource(dataSource);
        jdbcTokenRepository.setCreateTableOnStartup(false);//false是我们自己手动配置
        return jdbcTokenRepository;
    }
    ...............
}

PersistentTokenRepository为一个接口类,这里我们用的是数据库持久化,所以实例用的是PersistentTokenRepository的实现类JdbcTokenRepositoryImpl。
JdbcTokenRepositoryImpl需要指定数据源,所以我们将配置好的数据源对象DataSource注入进来并配置到JdbcTokenRepositoryImpl的dataSource属性中。createTableOnStartup属性用于是否启动项目时创建保存token信息的数据表,这里设置为false,我们自己手动创建。

通过查看JdbcTokenRepositoryImpl,我们会发现它需要创建一个数据库,用来存储这些信息

创建数据库的sql语句如下

CREATE TABLE persistent_logins (
    username VARCHAR (64) NOT NULL,
    series VARCHAR (64) PRIMARY KEY,
    token VARCHAR (64) NOT NULL,
    last_used TIMESTAMP NOT NULL
);

配置登录页面
这里的name属性,默认要设置成remember-me的,如果设置成其它的,需要在SecurityConfig中进行设置

	 记住我					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存