spring-boot - 如果登录用户的另一次登录尝试出现,春天有没有办法破坏 http 会话?
问题描述
对于我们使用 spring-boot (2.1.4)的应用程序,用户只能登录一次对我们来说很重要。
这相对容易配置并且与 REST 请求相关的效果很好。
http
.sessionManagement()
.maximumSessions(1)
.maxSessionsPreventsLogin(false)
.sessionRegistry(sessionRegistry());
大部分通信都是通过 websocket 进行的,到达这里就开始了我们的问题。当 websocket 连接断开时,我们的浏览器应用程序的视图会发生变化。如果 http 会话无效,则在服务器端断开 websocket 握手。
据我了解,如果用户使用已登录的用户再次登录,则 http 会话将保持有效,直到下一个 REST 请求。我希望 http 会话独立于请求终止。
我有一个解决方法,我检查每个AuthenticationSuccessEvent
是否已经有该用户的会话并终止它们。这种方法有效,但我不喜欢它。
非常感谢你的帮助!
解决方案
一个相对盲目的猜测,但你试过改变sessionFixation
吗?它应该在身份验证尝试时创建一个全新的会话,而不复制旧属性。
http.sessionManagement()
.sessionFixation().newSession()
;
推荐阅读
- nlog - 在自定义目标中重用 NLogs FileTargets FilePathLayout 功能
- vb6 - 来自 Interop 对象的 VB6 内存泄漏
- c# - 使用 MS-Graph API 搜索特定邮件时出现问题
- vue.js - 使用 Vue apollo 无限加载失败的查询
- javascript - 通过 chrome 扩展程序登录 laravel nova 网络应用程序。419 错误 csrf 令牌不匹配
- scala - 新 StreamingContext 上的 NoSuchMethodError
- regex - 在 Google Sheet 中提取 url 域根目录
- excel - 如何使用两个条件执行 sumproduct?
- javascript - 当嵌入到 expo-av 的视频组件中时,expo-camera 返回的视频 url 给出了空白屏幕
- excel - 在单元格中使用内部颜色来选择要存储在字符串中的电子邮件地址