【发布时间】:2016-05-31 08:35:01
【问题描述】:
我正在处理一个用例,我必须在部署在不同服务器上的 JSF 应用程序之间进行重定向。有点登录应用程序到主 web 应用程序。最初,我将这两个应用程序部署在同一台服务器上,并在同一域 (localhost) 下运行它们。
这两个应用程序是:应用程序 A(登录门户)和应用程序 B。应用程序 A 在根上下文中运行,例如http://localhost:8080/ 和 App B 在上下文 /app 例如http://localhost:8080/app/。当我通过普通的POST 提交请求从应用程序 A 重定向(登录后)到应用程序 B 时,应用程序 B 在同一浏览器选项卡下启动。在检查会话 id cookie 时,我看到 App B 虽然属于不同的部署,但与 App A 共享相同的会话 id。cookie 显示存储在路径 / 下的相同会话 id。启动 App B 后,我期待一个新的会话。正常吗,我需要明确创建一个新会话吗?还是因为我在同一台服务器上部署了两个应用程序战争文件localhost:8080?
【问题讨论】:
-
你有没有尝试过这样的事情:stackoverflow.com/questions/9436736/…?
-
我可以通过 POST 类型的 HTML 表单
<form>...</form>通过我的 JSF 页面中的 JSF 按钮提交重定向到 App B。除了会话之外,我不是想在应用程序 A 和应用程序 B 之间共享会话。否则我想要它。我希望每个应用程序都应该在自己的上下文中拥有自己不同的独立会话。重定向到 App B 后,我看到 App B 具有相同的会话 ID。我需要在新会话中启动 App B。 -
第二个链接显示了如何将会话 ID cookie 范围从
/更改为其他任何位置。无论如何,正如您在问题中所评论的那样,如果这些应用程序可以在单独的服务器上运行,您无需担心。您还可以在重定向到第二个应用程序之前使第一个应用程序的会话无效。 -
我想知道在同一服务器上部署这两个应用程序是否会导致用户的两个应用程序的会话 ID 相同。
标签: session servlets jsf-2 session-state