Spring Boot + Vue 前后端分离项目,如何踢掉已登录用户

本文介绍了在Spring Boot和Vue前后端分离的项目中,如何处理多端登录不踢掉已登录用户的问题。通过分析Spring Security的SessionRegistryImpl类,发现当使用自定义用户类时,需要重写equals和hashCode方法。配置完成后,项目将能正确限制并发session数量,实现多端登录踢人功能。
摘要由CSDN通过智能技术生成

首先,我们打开[Spring Security+Spring Data Jpa 强强联手,安全管理只有更简单!](()一文中的案例,这个案例结合 Spring Data Jpa 将用户数据存储到数据库中去了。

然后我们将上篇文章中涉及到的登录页面拷贝到项目中(文末可以下载完整案例):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XB0viq6-1588898082940)(http://img.itboyhub.com/2020/04/20200506204420.png)]

并在 SecurityConfig 中对登录页面稍作配置:

@Override

public void configure(WebSecurity web) throws Exception {

web.ignoring().antMatchers(“/js/", "/css/”, “/images/**”);

}

@Override

protected void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()

.and()

.formLogin()

.loginPage(“/login.html”)

.loginProcessingUrl(“/doLogin”)

.and()

.sessionManagement()

.maximumSessions(1);

}

这里都是常规配置,我就不再多说。注意最后面我们将 session 数量设置为 1。

好了,配置完成后,我们启动项目,并行性多端登录测试。

打开多个浏览器,分别进行多端登录测试,我们惊讶的发现,每个浏览器都能登录成功,每次登录成功也不会踢掉已经登录的用户!

这是怎么回事?

[](()2.问题分析


要搞清楚这个问题,我们就要先搞明白 Spring Security 是怎么保存用户对象和 session 的。

Spring Security 中通过 SessionRegistryImpl 类来实现对会话信息的统一管理,我们来看下这个类的源码(部分):

pu 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值