java - Spring 安全 : Show warning before overwriting session

标签 java spring security session spring-security

我已将最大并发 session 设置为一个。 现在有 2 种情况 我想处理是否有 Activity session (有人已经使用该用户 ID 登录):

  1. 如果用户在同一个浏览器上再次访问登录页面: 在这种情况下,他将直接登录。

  2. 如果用户从不同的浏览器/客户端计算机登录:在这种情况下,需要显示错误“此用户的 session 已处于 Activity 状态。您确定要覆盖 session 吗?”。如果用户选择"is",错误将在之前的 session 中显示(我知道错误页面可以配置),如果他选择“否”,则不会登录,之前的 session 将继续存在。

如何使用 spring security 来实现这些用例?到目前为止,我已经能够通过设置最大 session 数和错误页面找到并发 session 的基本管理。

请帮忙。

谢谢。

最佳答案

我想你已经差不多完成了。要在覆盖 session 之前询问用户,请按照以下步骤操作。

  1. ConcurrentSessionFilter 的 expiredUrl 属性应该到达提供 UI 以询问用户的页面(例如 askUser.html)。
  2. askUser.html 表单使用 POST 参数是或否提交到另一个 url(例如/api/confirmSessionRewrite)。
  3. 在 Controller ConfirmSessionRewrite 中,从 session 注册表中删除用户或将其转发到登录页面。

    sessionRegistry.removeSessionInformation(info.getSessionId());

  4. 您必须修改您的配置,以便 ConcurrentSessionFilter 不会在/api/confirmSessionRewrite 请求上运行。否则就是一个循环。

关于java - Spring 安全 : Show warning before overwriting session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41275516/

相关文章:

java - 如何在 RecyclerView 的 ViewHolder 中正确实例化 mContentView,以避免空对象引用?

sql-server - SQL Server 表所有者 - 更改默认值

java - 使用 JDK 7u7 构建的 Applet,在安装的 JRE 7u72 上运行 - 两者之间是否存在安全问题风险?

java - 如何优化我糟糕的代码以找到 3 位数字的最高回文数?

java - Android:如何捕获此异常

java - 如何在超时时终止服务器套接字线程?

java - 如何在 Spring Solr 中搜索多个值

SQLGrammer异常 : could not execute statement

php - PHP CURL 访问可能的恶意站点是否安全?

java - 当 ViewScoped 中的 bean 时,Arquillian 测试失败