Java - 如何在两个或多个Web应用程序之间共享会话?

sha*_*ech 10 java session spring web-applications

我有两个Web应用程序.我将登录到一个Web应用程序,并将通过第一个应用程序的链接或重定向导航到另一个Web应用程序.最后,在完成Application 2中的一些步骤后,我将被重定向到Application one.我该如何实现呢?

这里的Application 2是通用的,我将有三个Application One实例,它们将与Application 2进行交互.

请建议一个更好的方法.我必须使用spring和Spring Webflow来实现它.

San*_*osh 9

从技术上讲,两个Web应用程序(两个不同的WAR)之间的会话无法共享.这是出于安全原因而设计和完成的.我想就您的问题提出以下意见和建议,

  1. 通常使用会话ID来跟踪会话,该会话ID通常作为cookie存储在浏览器和服务器端的Session对象上.
  2. 每次发送请求时,都会向服务器端发送此cookie .
  3. 一个cookie将被发送ONLY到它是从哪里来的服务器.
  4. 因此,www.mysite.com/app1设置的cookie只会发送到www.mysite.com/app1而不会发送到www.mysite.com/app2.
  5. 对于您的情况,要使用户会话在两个应用程序中有效,浏览器将需要从app1和app2设置两个cookie.
  6. 一种方法是,当您使用java脚本登录app1时,也会向app2发送登录请求.当这两个请求都成功返回时,您的浏览器将同时拥有两个应用程序的会话(app1和app2)
  7. 现在注销将有自己的挑战,当您从app1注销时,您还需要从app2注销.从技术上讲,这意味着您需要清除这两个应用程序中设置的cookie.在Java脚本的帮助下,你可以做到这一点.

  • 对于"会话ID在您域的所有位置共享",路径需要设置为"/".这就是PHP必须做的事情,否则cookie处理与任何技术无关(java/php等) (4认同)

Ana*_*rma 6

当你必须从app1调用app2时,通过请求对象传递所有必要的信息(作为请求参数),然后app2可以读取并在那里创建会话(也许可以使用servlet/filter).

您可以使用群集在计算机之间共享同一应用程序(app1和app1)之间的会话.