当前位置: 首页 > news >正文

基于springsecurity的会话并发处理功能(附代码)

1. 需求

在项目中往往需要实现一个限制不同设备同时登录的功能,比如我只允许同一时间只有一个客户端能登录,而其他的已登陆的客户端会被挤出来

而springsecurity中恰好就帮我们实现好了对应的接口功能,我们只需要自定义配置就好

2. 结合springsecurity代码

这里简单输出JSON串,实际应用中需封装返回前端axios的响应,res做为响应体

public class MySessionInformationExpiredStrategy implements SessionInfomationExpiredStrategy{@Overridepublic void onExpiredSessionDetected(SessionInfomationExpiredEvent event) throws  IOException, ServletException{//创建map封装结果HashMap res = new HashMap();res.put("code", "555");res.put("message", "This account has been logged in from another device");//返回响应HttpservletResponse response = event.getResponse();response.setContentType("application/json;charset=UTF-8");  response.getWriter().println(JSON.toJSONString(res));   } 
}

3. 配置文件配置

在securityconfig配置类中添加

http.sessionManagement(session -> {//这里的1 就是同一时刻的会话并发数session.maximumSession(1).expiredSessionStrategy(new MySessionInfomationExpiredStrategy());
});

http://www.lryc.cn/news/407743.html

相关文章:

  • Redis底层数据结构的实现
  • 制作excel模板,用于管理后台批量导入船舶数据
  • 领略诗词之妙,发觉生活之美。
  • 基于FFmpeg和SDL的音视频解码播放的实现过程与相关细节
  • SSIS_SQLITE
  • Redis 7.x 系列【27】集群原理之通信机制
  • 【五】MySql8基于m2芯片arm架构Ubuntu24虚拟机安装
  • 【Hot100】LeetCode—279. 完全平方数
  • 腾讯云开发者《中国数据库前世今生》有奖创作季
  • redis:清除缓存的最简单命令示例
  • 基于深度学习算法,支持再学习功能,不断提升系统精准度的智慧地产开源了。
  • Cmake生成的Xcode工程相对路径与绝对路径的问题
  • “机器说人话”-AI 时代的物联网
  • C#高级:数据库中使用SQL作分组处理3(ROW_NUMBER() 关键字)
  • 光明乳业:以科技赋能品质,引领乳业绿色新未来
  • Footprint Analytics 助力 Core 区块链实现数据效率突破
  • 从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换
  • MYSQL(2) 高级查询
  • 小程序的运营方法:从入门到精通
  • 【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
  • 掌握 Symfony 路由系统:配置与管理
  • OpenTeleVision复现及机器人迁移
  • 气膜足球馆:经济高效的室内足球场馆解决方案—轻空间
  • Vue3二次封装axios
  • 【MetaGPT系列】【MetaGPT完全实践宝典——多智能体实践】
  • C#中GridControl的数据源双向绑定
  • sklearn详细基础教程(科普篇)
  • el-table列的显示与隐藏
  • 使用命令快速删除项目中的node_modules
  • leetCode15三数之和(双指针)