2012-01-03 6 views
0

私は、1つのインターネットエクスプローラウィンドウで管理者の資格情報を使って自分のJavaベースのアプリケーションにログインします。今度はもう1つ別のIEウィンドウを開き、アプリケーションホームのURL、つまりhttp://localhost:8888/myxwiki/を与えます。私はこの2番目に私が直接不正な管理者の資格情報でログインしているのを見ています。この2番目のウィンドウにログイン画面が表示されます。ログイン中に同じセッションが別のInternet Explorerウィンドウに接続されていますか?

私はデバッグを行い、両方のIEウィンドウxwikicontext.getRequest()。getSession()が同じセッションを返すことを発見しました(基本的に両方のセッションが同じセッションIDを持っています)。私の理解によれば、セッションはブラウザウィンドウに特有です。したがって、両方のウィンドウ(または異なるIEウィンドウからの要求)には、異なるセッションが接続されている必要があります。

別々のブラウザウィンドウから両方のリクエストが同じセッションIDを持つようになっても、どのようになっているのでしょうか。

+0

2番目のウィンドウは「新しいウィンドウ」ですか、「新しいタブ」ですか? – Manish

+0

その新しいウィンドウは全部 –

答えて

1

Cookie(JSESSIONID Cookieなど)を使用して現在のセッションを識別している場合、そのCookieは開いているすべてのブラウザウィンドウで共有されます。

特定のウェブサイトに対して新しいタブまたは新しいウィンドウを開くと、私の現在のセッションを維持することが期待されます。なぜあなたは異なって期待していますか?あなたはそれがIE 9であれば、使用しているIEのバージョン

+0

でも同じ方法で動作します:) – Ahamed

+0

2つの異なるユーザーが2つの別々のウィンドウからログインしたいというシナリオがあります。しかし、今私は2番目のユーザーのログインを行うために最初にログアウトする必要があります。ほとんどのアプリケーションではこれは当てはまりませんが、これは私の使用例の要件です。 –

+0

@MSach:これがあなたのユースケースの要件であれば、セッション状態を保持するためにクッキー*を使うことはできません。セッショントークン(または現在のセッション変数のみ)をURLクエリ文字列パラメータにエンコードするか、リクエストごとにPOSTされるフォームにエンコードする必要があります。最も単純なアプローチは、 'HttpSession'実装を完全に使用することを避け、すべての要求に必要な状態を渡すことによって"擬似セッション "を作成することだと思います。 (これはとにかくよりRESTfulなアプローチです)。 –

0

わからない、その後、別のセッションを作成するために使用であるかもしれない次

ファイル - >新規セッション

この意志別のセッションで新しいIEウィンドウを開きます。トラブルシューティングに最適。

関連する問題