【问题标题】:session maintaince for two applications两个应用程序的会话维护
【发布时间】:2013-11-28 13:36:02
【问题描述】:

我有一个网络应用程序say A, 当我登录此应用程序时,其主页包含一个链接,

当我点击该链接时,我会登录到另一个 Web 应用程序 Say B 并在 A 的主页中打开一个 iframe

两个应用程序都部署在不同的服务器上

现在,当我点击 B 应用程序 (iframe in A) session 中的任何链接/按钮时,B 应用程序将过期。

为了维护会话,我重写了 B 应用程序的 url,通过 附加会话 id 到它。

这样做就是登录。

但是,当我使用request.getSession() 时,我总是得到新对象

我想要上一个会话对象,因为我在会话对象中有值。

他们有什么办法让我可以维持会话吗???

谢谢

【问题讨论】:

  • 你使用什么框架和服务器?
  • 我正在使用 tomcat , sturts1 并且我无法访问应用程序 A 的代码

标签: java servlets session-state sessionid


【解决方案1】:

将会话视为为 Web 应用程序上的每个用户创建的地图。

意思是,属于 WebApp-A 的 session1 是该应用程序本地的,而属于 WebApp-B 的 session2 是该应用程序本地的。

您在 URL 中看到的 jsessionId 是应用服务器用来识别该 webapp 的会话对象的键。

因此,就您而言,您需要考虑通过其他方式共享数据:

  1. 如果您只想访问某个键/值对,请将其作为请求参数通过 URL 传递。
  2. 如果你想访问一个对象,那么考虑使用一个共享存储——比如一个数据库;或分布式缓存
  3. 如果您只想让用户同时登录这两个应用程序,那么您需要一个单点登录解决方案

从您的问题的外观来看,您只希望用户通过一个挑战登录到两个应用程序。阅读 SSO 解决方案。

会话对象会有所不同。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    这个 Stackoverflow 问题讨论了一些相关的事情。

    How to transfer session from one Tomcat server to another?

    【讨论】:

      【解决方案3】:

      似乎您需要在应用程序中再注入一层,即某种会话管理器。由于您无法修改app B,因此您应该修改您的“应用程序 A”。但是在这种情况下,您将成为局势的人质。另一件坏事是,如果再添​​加一个app C,你必须做什么。

      嗯,Harsha R 已经提到了 SSO 解决方案。您可以在app A 级别实现一个,如我之前所说的一些会话管理器。例如,通过您的特殊Servlet 请求app BFilter 功能合作,您可以替换Http-Headers 以支持在不同应用程序之间无缝管理JSESSIONID(和另一个会话保存内容)。

      【讨论】:

        【解决方案4】:

        如果会话跟踪模式为 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>
        

        【讨论】:

          猜你喜欢
          • 2015-01-07
          • 2013-05-04
          • 2014-08-02
          • 2014-10-13
          • 1970-01-01
          • 1970-01-01
          • 2016-04-04
          • 2012-04-17
          • 2019-08-16
          相关资源
          最近更新 更多