Spring Security--会话管理

news/2024/11/15 1:52:57/

就像登录qq一样,一个手机登录会将另外一个手机挤下线,这个就叫会话管理。

这个东西非常简单,在默认情况下可以登录n多次,一旦开启,就不允许登录多个。

什么是一个会话。

我们简单理解就是一个浏览器的同一个用户算一个用户,比如谷歌,你添加访客登录

 打开的新窗口就是另一个会话

不同浏览器之间也是不同的会话。

我们只需要简单的配置一下,就可以实现,这边登录,那边下线的效果。

在security的执行链中添加以下配置

 我们设置最大的并发数为1,也就是一个用户只可以在一台设备上登录

注:这里有人会在加了这个后

 出现报红,怎么办呢,再加一个and()

 这里只要看到and的返回值是httpsecurity就好了,是的话就不用继续,不是就继续加一个。

这个地方解释一下为什么会出现俩个and的情况。

 如图,在这个层级还可以配置一些会话的其他策略,比如:超过了一个了怎么办,是把上一个踢掉还是怎么办,就是说这个会话策略里还有其他配置,你目前处于这个层级,是会话配置的层级。当你and()以后,你会回到选择到和会话同一级地方,

 同样的,回到这一级又可以配其他策略,比如session的策略,就是在这一级。

可以把这个链看成一个菜单.sessionManagement()让你菜单进去了一层,.maximumSessions(1)

又让你进去了一层,此时返回就需要两次,也就是两个and。

在服务器,Spring Security维护了一个会话注册表,所有的登录上来的用户,都会注册到这个注册表中,本质上是一个map集合,key是用户对象,value保存了用户所有的会话对象,Map<User,List<Session>>。

当用户注销登录时,用户的session会被字段销毁,但是在map中的session不会自动移除,所以当用户注销时,将List的集合中的用户的对应会话移除掉。

这个也很简单,只需要在spring容器中注册一个Bean就可以了。

 到了这个位置,就会有人会出现一个问题,设置的会话怎么看都没起作用,设置了最大会话为1,其他会话一样可以登录,且一起的也没退出。这是为什么?

我们回到这个map里Map<User,List<Session>>,map的key是当前的用户对象,用对象做map的key一般来说需要重写equals和hashcode方法,不然每次登录上来,User对象都是现场new出来的,可不就出问题了吗。

我们重写一下User的方法

 

 用户名已经是唯一的了,我这里就只选用户名,一直next,结束。

 

 重启一下,看看效果。

此时所有的配置都生效了。


http://www.ppmy.cn/news/367532.html

相关文章

Python学习笔记酷游的地址: 操作word docx文件之docx模组功能快览及程式示范

今天我们来讲Python&#xff0c;【酷游娜娜K͜W͜9㍠N͜E͜T͜地址提供】操作文件以及模组功能快览方式&#xff0c;文章最后有秀程式的示范给大家看哦&#xff01;话不多说让我们继续看下去 Document constructor (文件建构器) 语法说明document Document()开启新文件docum…

【数据挖掘实战】——科大讯飞:跨境广告ROI预测

&#x1f935;‍♂️ 个人主页&#xff1a;Lingxw_w的个人主页 ✍&#x1f3fb;作者简介&#xff1a;计算机科学与技术研究生在读 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4a…

红米note5手机插u盘没反应_VIVO NEX手机不充电,插充电器没反应,这个地方最容易坏,你中招了吗?...

客户送修一台VIVO NEX&#xff0c;描述故障为不充电&#xff0c;自己拍拍几下又能充了。拿到手机后首先确认故障&#xff0c;插充电器无任何反应。 拆下后盖&#xff0c;当用手按住通尾插小板的排线&#xff0c;充电电流表出现了充电电流。 但电流很小&#xff0c;说明这还是一…

智能手机触屏失灵

如今智能手机触摸屏均采用电容触摸屏&#xff0c;如果偶尔遇到手机触摸屏失灵&#xff0c;则建议先检查手机屏幕上是否有脏物、是否有汗水等等&#xff0c;有时候由于此类原因很容易导致电容触摸屏出现失灵或者出现漂移现象&#xff0c;另外电容触摸屏不宜靠近强磁场的东西&…

手机拆机-经验记录

1.一般更换手机配件不需要拆手机电池 一般情况下更换手机配件请确认是否需要拆电池&#xff0c;因为现在手机一般电池直接粘在后盖上&#xff0c;电池下面没有排线通过&#xff0c;所以更换手机配件一般可能不需要拆卸电池。 2.拆卸手机电池请勿使用坚硬物品&#xff08;如&a…

手机拆解:邦华V100

邦华V100配置 216GB5.5英寸屏幕2500mAh 详细配置 拆解流程 这款手机最开始弄错了拆解思路&#xff0c;导致费了很久时间&#xff0c;最后发现后背板只是粘贴上去的&#xff0c; 手机从侧面看有三层&#xff08;如上图&#xff0c;网图侵删&#xff09;&#xff0c;但是拆卸…

手机换屏_20170828

手机屏幕已经坏了几个月了&#xff0c;也懒得换&#xff0c;开会同事说可以在淘宝买个总成的屏幕&#xff0c;自己换&#xff0c;很简单&#xff0c;想了想&#xff0c;既然很简单&#xff0c;还不想换手机&#xff0c;就换个屏幕吧。2017年8月17日在淘宝定了个屏幕总成带原框。…

python控制苹果手机触摸屏失灵怎么办_苹果手机触摸屏失灵的各种解决方法

原标题&#xff1a;苹果手机触摸屏失灵的各种解决方法 “1、当用户在使用手机的时候&#xff0c;如果出现了屏幕失灵现象的时候&#xff0c;用户可以在锁屏状态下长按home键然后就可以启用语音控制功能。然后在这个时候说《播放音乐》玩家可以选择播放歌曲&#xff0c;接着在选…