初の.NETフレームワークでこれを行うか、誰がなど、いくつかのチュートリアルの方向に私を指すことができるためのメカニズムに組み込まれた任意の追加があります現在使用されているセッションIDを格納するフィールドをusersテーブルに追加します。このIDはコードから簡単にアクセスできます。ユーザーがログインすると、そのIDを保管します。
すべてのページリクエストで、現在のセッションIDがユーザーテーブルに格納されているものと一致することを確認します。一致しない場合は、現在のセッションデータを消去し、ユーザーをログイン画面に戻します。
これは、IE7が各タブで同じインスタンスを使用するため、IE 7で複数のタブを使用することをユーザーが停止することはありません。複数のブラウザインスタンスを使用できなくなります。
これが機能する理由は、各ブラウザに独自のCookieスペースが含まれているためです。セッションIDは、セッションIDを格納しているCookie値に基づいてサーバー側と一致し、各要求時にサーバーに返されます。
ちなみに、これはセッションハイジャックを排除する非常に有効な方法ではありません。セキュリティ監査が防止しようとしているように思えます。それを行う必要がある場合は、質問を更新してください。セッションハイジャックを停止する
UPDATE
一つの方法は、セッション中にして、ブラウザ上のクッキーとして乱数を格納することです。次のリクエストが来たら、クッキーとセッションの値が一致することを確認します。そうでない場合は、userテーブルのsession id変数をリセットします。これにより、すべてのセッションが強制的に再度ログインされます。すべてのページ要求(ポスト/取得)に対して、新しいランダム値を作成します。欠点は、ページをブックマークできないことです。それはおそらく受け入れられるだろう。
お願いします。ユーザーが別のマシン/ブラウザからログインすると、他のブラウザのセッションは終了し、新しいブラウザで続行されますか? –
はい - ユーザーが別のマシン/ブラウザからログインし、他のブラウザのセッションが終了し、新しいブラウザで続行します。 –
@Ian: "Spec"があまりにも緩いです。IEの別のインスタンスを使用するとどうなりますか? IOWは、普遍的に1つのブラウザプロセスだけがユーザに対してアクティブなセッションを持つことができると言っていますか? – AnthonyWJones