【问题标题】:Session Should not expire会话不应过期
【发布时间】:2011-11-28 08:25:32
【问题描述】:

我有 2 个申请,

  • 1 作为 A 应用程序和
  • 2 作为 B 应用程序。

现在从 A 导航到 b 应用程序,我将在那里花一些时间。在 B 我有一个注销按钮,如果用户点击它,它应该回到应用程序 A,会话完好无损。

我使用的是J2EE和Weblogic服务器,这里a和b的服务器也不同。 谁能帮帮我,我需要在今天晚上之前完成这项工作。 提前感谢您的帮助。

【问题讨论】:

  • 阅读第一句话后我想到了单点登录,但您的注销场景与单点登录不同步......我也很好奇这是否可能
  • 无论如何,我使用单点登录方法从 a 连接到 b,请注意这是一个 Java 解决方案。
  • A 和 B 在不同的服务器上,所以无论如何它们的 Session ID 都会不同。但是,如果您已经在使用 SSO 提供商,它是哪一个 - 它是产品还是一些内部解决方案?因为如果它是某些产品,SSO 将不允许在注销时发生这种情况
  • 它是 Santosh 提到的内部逻辑。但最后,Santhosh 所做的符合我的情况。

标签: java session jakarta-ee weblogic


【解决方案1】:

这是一种方法

  1. 假设用户在具有有效会话的应用程序 A 上。
  2. 当您单击链接(或发布一些数据)以继续应用程序 B 时,请在查询字符串中传递一些令牌。 (此令牌可能已加密(用户名+密码+salt))。
  3. 应用程序 B 接收查询字符串数据,对其进行解密并对用户进行身份验证。
  4. 当用户在应用程序 B 中单击注销时,应用程序 B 中的注销处理程序(可能是 servlet/JSP/Controller/Action 等)对应用程序 A 执行 response.sendRedirect()
  5. 其会话仍将保持不变(前提是会话未超时,即用户在应用程序 B 上花费的时间小于应用程序 A 的会话超时时间)。

【讨论】:

  • @Kumar,我希望这能解决你提到的问题。请接受这个作为答案。
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 2013-02-06
  • 2013-10-06
  • 2013-09-19
  • 1970-01-01
相关资源
最近更新 更多