7

为了让 Internet Explorer 8 “更稳定”和“更快”,微软改变了浏览器的底层架构,并引入了一个名为“松散耦合 IE”(LCIE)的功能,该功能用于跨 TAB 和新的会话共享实例。

但是当有人试图用同一个应用程序一次做两件不同的事情时,会话共享可能是致命的,例如有人想一次预订一张前程票和一张回程票,那时他将预订 2 份相同的门票他没有打算。

可能的解决方案

  1. 在创建新窗口而不是通过单击图标或 Ctrl+N 创建时,我们应该使用 File -> New Session;它不会发生。

  2. 您可以在客户端 PC 上进行注册表更改 - 添加以下内容。

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]

“TabProcGrowth” = 双字:00000000

将禁用“松散耦合 IE8”;然后 IE8 可以作为以前版本的 IE 工作。

  1. 使用运行 MSIEiexplore.exe -nomerge将禁用“松散耦合 IE8”;然后 IE8 可以作为以前版本的 IE 工作。

但是我将如何以编程方式进行呢?


你看,我的问题不是我的应用程序。如果我登录一个用户,它工作正常,但是当我通过来自不同 IE8 浏览器实例的不同用户登录多个用户时,我以后的会话数据会覆盖前一个,这是因为两个 IE 浏览器都使用相同的会话 ID。这是因为 IE8 的会话共享而发生的。一个应用程序只维护一个会话,但是我登录了多少用户。事实上,我想维护每个用户的会话。

就像我在一个浏览器中登录 Gmail 时一样。如果我只是在另一个浏览器上输入 Gmail。它正在自动登录。我不想在我的应用程序中使用它。我应该在我应该执行独立操作的时候让另一个用户登录。

我的应用程序使用 Struts、Spring、Hibernate 和 JBoss 应用程序服务器。

现在告诉我应该如何进行?

4

4 回答 4

2

我认为您上面描述的问题可以在所有浏览器上复制,并且可以在服务器端得到更好的解决。我知道的一种方法是创建一个对话 ID 并使用状态机管理对话的生命周期。

这允许您(和您的用户)拥有一个可以同时进行多个对话的会话,这在实践中经常发生,至少在内部企业应用程序中是这样。世界比业务流程模型所展示的更加混乱。

于 2010-06-03T07:39:34.437 回答
0

尝试在客户端维护会话 ID。例如,在 JSP 级别。然后将其发送回服务器组件并尝试对其进行跟踪。假设接收到的会话当前在服务器端正在进行,然后通过同步或类似的等待机制保持一段时间。我希望这种会话问题应该得到解决。

于 2010-06-03T07:38:31.650 回答
0

您最好的选择可能是使用支持多个并发会话(有时称为会话或流)的 Web 框架,或者只是避免过多使用会话并使用 REST。如果您需要在客户端上破解它,您将无法从您的 web 应用程序中执行此操作,但自定义 win 程序或 .reg 文件可以执行此操作。这也意味着使用其他操作系统和浏览器的用户仍然会遇到同样的问题。

于 2010-06-03T07:42:02.997 回答
0

我不喜欢提供的其他解决方案。我唯一想要的是提供一个用户可以单击的 URL,它会获得一个新的会话来登录。有明确的 sessionAuthentication 功能,但没有openLinkInNewSessionWindow

IE8 浏览器的一种解决方法,您可以在“多次登录”页面上提供一个链接,并使用浏览器中丑陋的 WScript。一个例子:

<html>
  <head>    
    <script>
      function openNewSessionIE8NoMerge() {
        // This opens a new session window for windows with IE8, unfortually there is a Active X security warning.
        var WshShell = new ActiveXObject("WScript.Shell");
        WshShell.Run("iexplore.exe -nomerge www.gmail.com?testNewSession");
      }
    </script>
  </head>

  <a href="#" onclick="javascript:openNewSessionIE8NoMerge();">Click here for a new session IE8 (multiple sessions on the same application)</a>
</html>

测试:将示例保存在sampleNewSession.html中,用IE8打开文件,在gmail的新标签登录,点击sampleNewSession中的链接。现在有一个新窗口并且没有登录。

这将对用户有所帮助,它只需单击一个链接。唯一的问题是 activeX 安全消息。

于 2010-07-16T23:25:45.997 回答