我有一个网络应用程序say A
,
当我登录此应用程序时,其主页包含一个链接,
当我点击该链接时,我正在登录另一个网络应用程序Say B
,并在A的主页中打开 iframe
。
这两个应用程序都部署在不同的服务器上。
现在,当我点击B应用程序{B}申请的(iframe in A)
session
内的任何链接/按钮到期时。
为了维持会话,我通过追加会话ID 重写B应用程序的网址。
通过这样做登录。
但是,当我使用request.getSession()
时,我总是得到新对象。
我想要上一个会话对象,因为我在会话对象中有值。
他们是否可以保持会议。???
由于
答案 0 :(得分:0)
将会话视为为Web应用程序上的每个用户创建的Map。
含义,属于WebApp-A的session1对于该应用程序是本地的,属于WebApp-B的session2对于该应用程序是本地的。
您在URL中看到的jsessionId是应用程序服务器用来标识该Web应用程序的会话对象的密钥。
因此,在您的情况下,您需要考虑通过其他方式共享数据:
从问题的外观来看,您只希望用户通过一次挑战登录到两个应用程序。阅读SSO解决方案。
会话对象会有所不同。
希望有所帮助。
答案 1 :(得分:0)
此Stackoverflow问题讨论了一些相关的事情。
答案 2 :(得分:0)
似乎你需要在你的应用程序中再注入一层,某种会话管理器。由于您无法修改app B
,因此您应该修改“应用A”。但在这种情况下,你将成为人质。另一个坏处是质疑在添加一个app C
时你必须做什么。
嗯,Harsha R已经提到了SSO解决方案。您可以在app A
级别实现一个,如前所述,我可以使用一些会话管理器。例如,通过您的特殊app B
与Servlet
功能合作请求Filter
,您可以替换Http-Headers
来支持无缝JSESSIONID
(以及其他会话管理)管理在不同的应用程序之间。
答案 3 :(得分:0)
如果会话跟踪模式为COOKIE
,您可能会尝试更改Cookie名称,以便它们对于这两个应用不同:
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<!-- change below -->
<name>web-app-A</name>
<path>/</path>
<http-only>true</http-only>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>