创建具有特定会话ID的会话

时间:2012-02-17 15:15:04

标签: java javascript jquery httpsession

谢谢你们查看我的帖子。

由于许可问题出现灰色区域,我有两个运行tomcat的实例。我正在使用Apache代理在两者之间进行无缝通信。

App1生活在tomcatA。 App2生活在tomcatB。

两者都需要用户身份验证并使用会话来存储数据。 App1是外部世界唯一可见的,App2中的所有请求都是由App1的JavaScripts生成的。不幸的是,App1有一个会话,并将该特定的JSESSIONID发送给来自App2的所有请求。由于App2中没有具有该特定ID的会话,因此返回错误。

我有没有办法初始化具有特定ID的会话? 有没有办法让我修改所有请求,以便将有效的会话ID放入标题中。

编辑:我需要App2才能意识到来自App1的具有特定会话ID的请求会映射到App2创建的会话。

2 个答案:

答案 0 :(得分:2)

即使两个应用程序都存在于同一个Tomcat中,会话也会有所不同,因为它们是基于每个应用程序发布的。就个人而言,我并不完全相信这种设计。

如果您的问题是如何将身份验证传播到其他应用,请使用单个登录应用程序,如Josso或CAS;要共享会话数据,您可以使用可从两个应用程序访问的集中式缓存,并可通过JSON访问。

是的,会话数据不好。

更新:你不能简单地实现一个握手协议,如:app2 / register / {app1 session id} - 此时你们都拥有两个会话ID,你可以相互关联。这也可以通过会话监听器来完成。

答案 1 :(得分:1)

您可以为tomcatB使用不同的会话cookie名称(或路径,如果可能)。因此,tomcatB会将JSESSIONID cookie视为任何其他cookie,而不是会话cookie。

请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/context.html