我的 UI 由两个 HTTP 服务器提供服务。 因此我需要清除两台服务器的 HTTP session 。 对于注销用例来说很简单,但我不清楚如何针对 session 超时用例执行此操作。
服务器端的通知可以通过 HttpSessionBindingListener 实现 Getting notification when bounded/unbounded to a HTTP session 。 但我怎样才能通知客户端呢? 我必须将请求从浏览器发送到第二台服务器才能清除第二台服务器上的 session cookie,因此我无法从服务器端发送请求。
已添加
一台服务器是 Tomcat 8,第二台服务器是 Apache HTTPD 服务器。我想通过 UI 回调来解决这个问题是可能的(来自 Tomcat HTTP servlet 服务器)。
最佳答案
来自 Apache HTTPD (Apache) 文档:
将 session 与外部应用程序集成
https://httpd.apache.org/docs/2.4/mod/mod_session.html#integration
- 您可以编写自己的模块,然后您可以使用该模块在 Tomcat 认为 session 可消耗后删除 session 。
- 您可以使用 Tomcat 和 Apache 外部的 session 数据库(例如在 MySQL 中),两个服务器都将使用它来验证用户。删除 session 只需要从数据库中删除条目。
- 作为独立应用程序:正如文档所述,您需要完成查找和访问 session 文件、破坏它们和编辑它们的工作。如果 Tomcat 和 Apache 位于不同的计算机上,您可以在 Apache 机器上使用带有监听器的代理,并让 Tomcat 请求代理删除 session 数据。
- Apache 通常与 PHP 一起使用,而且也有数据库。两者都可以有自己的 session 来处理。
关于session - session 超时时来自浏览器的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576534/