Spring security 使用Spring安全性的会话管理:并发会话

Spring security 使用Spring安全性的会话管理:并发会话,spring-security,session-management,Spring Security,Session Management,我使用spring security开发了一个web应用程序。对于登录,它可以从LDAP访问。现在我想使用spring security本身来管理会话,我可以通过使用authentication.getName()看到我正在获取username,我还可以获取sessionID 现在我想确定,如果同一用户正试图使用其他浏览器从同一系统登录,他应该会收到一条消息,说明他已经登录到他的帐户 有人能给出一个如何实现这一点的想法吗 当我使用此浏览器并尝试使用其他浏览器登录时,会出现以下错误: HTTP

我使用spring security开发了一个web应用程序。对于登录,它可以从LDAP访问。现在我想使用spring security本身来管理会话,我可以通过使用
authentication.getName()
看到我正在获取
username
,我还可以获取
sessionID

现在我想确定,如果同一用户正试图使用其他浏览器从同一系统登录,他应该会收到一条消息,说明他已经登录到他的帐户

有人能给出一个如何实现这一点的想法吗


当我使用此浏览器并尝试使用其他浏览器登录时,会出现以下错误:

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
enter code here

我可能遗漏了一些内容,但我已尝试了下一个配置,它按预期工作:


当我尝试使用同一用户从另一个浏览器登录时,它会将我带到/login.jsp并显示错误消息:
此主体的最大会话数超过了1

编辑:您还需要将其放入
web.xml


org.springframework.security.web.session.HttpSessionEventPublisher

我有您建议的fsame配置。加上JdbcTokenRepositoryImpl。所有这些,我用一个浏览器登录;然后我用另一个重新登录。看起来第二个已经登录了,确实是。我的问题是,我从第一个浏览器中点击了一个链接,我得到了以下异常:
Estado http500-PreparedStatementCallback;错误的SQL语法[从用户名=?]的持久登录中删除];[废话]:表“gbt.persistent_logins”不存在
。而这张桌子实际上已经从数据库中消失了!!!有人知道发生了什么事吗?