【问题标题】:How to know if there are other window using the same JSESSIONID?如何知道是否有其他窗口使用相同的 JSESSIONID?
【发布时间】:2012-09-23 05:01:42
【问题描述】:

我知道这几乎是同一个问题:ask by Joe

我有一个网络应用程序。当我关闭窗口(在浏览器上单击 X)时,它将调用注销功能。

问题是当我打开 Web 应用程序并在不同窗口(新窗口或另一个选项卡)上打开相同的 Web 应用程序时。并关闭其中一个窗口,即使该应用程序仍有一个打开的窗口,它也会调用注销功能。

我想要做的是,首先检查是否有其他窗口使用与我即将关闭的当前窗口相同的 jsessionid。当我关闭该窗口时,它只会在没有使用相同 jsessionid 的窗口时调用注销功能。

【问题讨论】:

  • 在不同的浏览器中打开同一个应用会怎样?
  • 用不同的浏览器打开同一个应用会创建一个新的Session。

标签: java jquery jsp cookies jsessionid


【解决方案1】:

当然,标准方法是让登录 cookie 在浏览器关闭时过期,从而将您注销,但我猜这在您的情况下是不可接受的行为?

AFAIK 您无法访问另一个浏览器窗口的内容,除非该窗口是使用 Javascript 创建的。由于听起来您在 Javascript 中使用 onUnload 处理程序,因此您可以使用这些相同的处理程序来跟踪您的窗口。但它会导致一些开销,并且不会完全证明(例如,不会处理浏览器崩溃或用户离开您的应用)。

伪代码:(这需要混合使用服务器端代码和客户端 javascript,因为负载处理程序是在 Javascript 中处理的,并且会话是服务器端的)

function OnLoad() {
  if (document.referrer != "{identify your app here}")
    Session("BrowserWindowsOpen")++;
}

function OnUnLoad() {
  if ({your code for if window is closed})
  {
    Session("BrowserWindowsOpen")--;

    if (Session("BrowserWindowsOpen") == 0 )
      performLogOut();
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2016-02-13
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多