首页 > 解决方案 > 如果登录用户的另一次登录尝试出现,春天有没有办法破坏 http 会话?

问题描述

对于我们使用 spring-boot (2.1.4)的应用程序,用户只能登录一次对我们来说很重要。

这相对容易配置并且与 REST 请求相关的效果很好。

http
  .sessionManagement()
  .maximumSessions(1)
  .maxSessionsPreventsLogin(false)
  .sessionRegistry(sessionRegistry());

大部分通信都是通过 websocket 进行的,到达这里就开始了我们的问题。当 websocket 连接断开时,我们的浏览器应用程序的视图会发生变化。如果 http 会话无效,则在服务器端断开 websocket 握手。

据我了解,如果用户使用已登录的用户再次登录,则 http 会话将保持有效,直到下一个 REST 请求。我希望 http 会话独立于请求终止。

我有一个解决方法,我检查每个AuthenticationSuccessEvent是否已经有该用户的会话并终止它们。这种方法有效,但我不喜欢它。

非常感谢你的帮助!

标签: spring-bootspring-security

解决方案


一个相对盲目的猜测,但你试过改变sessionFixation吗?它应该在身份验证尝试时创建一个全新的会话,而不复制旧属性。

  http.sessionManagement()
                .sessionFixation().newSession()

;


推荐阅读