7

Microsoft は、Internet Explorer 8 を "より安定" し、"高速化" するために、ブラウザーの基盤となるアーキテクチャを変更し、TAB と新しいブラウザー間でセッションを共有する "Loosely-Coupled IE" (LCIE) と呼ばれる機能を導入しました。インスタンス。

しかし、誰かが同じアプリケーションで一度に 2 つの異なることを行おうとすると、セッション共有は致命的となる可能性があります。たとえば、ある人が一度に往路のチケットを 1 枚と復路のチケットを 1 枚ずつ予約したい場合、その時点で同じものを 2 枚予約します。彼が意図していないチケット。

IT に関する考えられる解決策

  1. アイコンをクリックするか Ctrl+N で作成するのではなく、新しいウィンドウを作成するときは、[ファイル] -> [新しいセッション] を使用する必要があります。それは起こりません。

  2. クライアント PC でレジストリの変更を行うことができます - 以下を追加します。

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

“TabProcGrowth” = dword : 00000000

「IE8 の疎結合」を無効にします。IE8 は以前のバージョンの IE として機能します。

  1. MSIE を実行iexplore.exe -nomergeすると、"Loosely Couple IE8" が無効になります。IE8 は以前のバージョンの IE として機能します。

しかし、どうすればプログラムでそれを行うことができますか?


ほら、私の問題は私のアプリケーションではありません。1 人のユーザーでログインしている場合は正常に動作していますが、IE8 ブラウザーの異なるインスタンスから異なるユーザーを介して複数のユーザーをログインしている場合、後のセッション データが前のセッション データを上書きしています。これは、両方の IE ブラウザーが同じものを使用しているためです。セッションID。IE8 のセッション共有が原因で発生しています。1 つのアプリケーションに対して維持されるセッションは 1 つだけですが、ログインしているユーザーの数は 1 つだけです。実際、ユーザーごとにセッションを維持したいと考えています。

1 つのブラウザで Gmail にログインしているときのように。別のブラウザで Gmail と入力しているだけの場合。自動的にログインしています。私は自分のアプリケーションでこれをしたくありません。独立した操作を行う必要があるときに、別のユーザーにログインしてもらう必要があります。

私のアプリケーションは、Struts、Spring、Hibernate、および JBoss アプリケーション サーバーを使用しています。

では、どのように進めればよいか教えてください。

4

4 に答える 4

2

上記の問題はすべてのブラウザで再現でき、サーバー側でより適切に取り組むことができると思います. 私が知っている 1 つのアプローチは、会話 ID を作成し、ステートマシンで会話のライフサイクルを管理することです。

これにより、あなた (およびあなたのユーザー) は、複数の会話を同時に行うことができる 1 つのセッションを持つことができます。これは、実際には、少なくとも社内のエンタープライズ アプリケーションでは頻繁に発生します。世界は、ビジネス プロセス モデルが示す以上に混沌とした場所です。

于 2010-06-03T07:39:34.437 に答える
0

クライアント側でセッション ID を維持するようにしてください。たとえば、JSP レベルで。次に、それをサーバー コンポーネントに送り返し、追跡を試みます。受信したセッションが現在サーバー側で進行中の場合は、同期または同様の待機メカニズムによってしばらく保持します。この種のセッションの問題がトリッキーに解決されることを願っています。

于 2010-06-03T07:38:31.650 に答える
0

おそらく最善の策は、複数の同時セッション (会話またはフローと呼ばれることもあります) をサポートする Web フレームワークを使用するか、セッションの使用をあまり避けて REST に移行することです。クライアントでハッキングする必要がある場合、Web アプリケーションからは実行できませんが、カスタムの win プログラムまたは .reg ファイルで実行できます。これは、他の OS やブラウザーを使用しているユーザーでも同じ問題が発生することを意味します。

于 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 に答える