session - 在两个 Web 应用程序之间同步 session

标签 session tomcat timeout

用例:

我有两个在 tomcat 上运行的 Web 应用程序,它们部署在两台不同的机器上。我的申请之一是 parent ,另一个是 child 。我登录到我的父应用程序并点击父应用程序页面之一上的链接我向我的子应用程序发送浏览器请求,该请求在单独的浏览器窗口中打开其页面之一。在这种情况下,我希望我的两个应用程序共享相同的超时值,并且应该表现得像一个完整的应用程序。

要处理的场景:

  1. 如果我从父应用程序注销,我的子应用程序也应该注销
  2. 如果我关闭父窗口, parent 应该和 child 一起注销
  3. 如果我关闭子窗口, child 应该注销并且 parent 应该保持登录状态
  4. 如果两个窗口都关闭了, parent 和 child 都应该注销

解决方案:

  1. 将父 session 超时设置为某个值..比如 30 分钟
  2. 在父级上创建一个 REST 服务..让我们说“parentisAlive()”
  3. 为 child 创建一个 REST 服务..让我们说“childisAlive()”
  4. 在父子上创建 session 监听器
  5. 每个 session 监听器都会调用各自的 REST 服务
  6. REST 服务会根据自己应用程序的 session ID 相互通信
  7. parent 会保留(内存/数据库) child 的 sessionID,反之亦然
  8. 当每个应用程序的超时值达到特定值时,相应的应用程序 session 监听器将被激活。比如 20 分钟
  9. session 监听器将调用各自的 REST 服务,该服务将负责同步彼此的 session 超时值

任何人都可以建议这是否是实现 session 同步的好解决方案,有人看到其中的任何缺陷吗?

最佳答案

Tomcat Single sign on阀门将满足您的大部分需求。但是,如果您关闭浏览器窗口,只要至少打开一个窗口或选项卡, session 仍将保留。

关于session - 在两个 Web 应用程序之间同步 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413624/

相关文章:

java - Chromedriver 未及时加载。给出错误 org.openqa.selenium.WebDriverException : Timed out waiting for driver server to start

php - 如何将数组添加到 url 或发送 post 数组?

c# - 如何防止在多个选项卡中共享用户定义的 session ?

performance - tomcat进程占用所有CPU和大量虚拟内存

jsp - 使用 JSP 的 Tomcat LDAP 身份验证

javascript - 我如何让我的 javascript 超时只有 3 秒?

kubernetes - 什么是 configmap 缓存?

php - 阻止用户通过 URL 访问管理区域

python - 使用 Python Flask 检查 cookie

python - 带有/数据库的 Java Web 应用程序应该有多少个 docker 容器?