すべてのユーザーが完全な Web サイトにアクセスできるわけではないため、私のアプリケーションはユーザー権限を制御しています。現時点では、特定のユーザーのすべてのアクセス許可が彼のセッションに保存されています。
問題は、アクセス許可を削除しても、ユーザーは引き続きページにアクセスでき、ブラウザーを閉じたときにのみ更新が有効になることです。
ID によって特定のアプリケーション セッションを強制終了し、ユーザーに再度ログインを強制する方法はありますか?
"Is there a way to Kill an specific Application Session by the ID, forcing user to Log in again?"
いいえ。現在のリクエストを実行しているユーザー (つまり、自分自身) の Session オブジェクトにのみアクセスできます。他のユーザーの Session オブジェクトにはアクセスできません。
そのため、ユーザーの ID を別の場所 (静的コレクションなど) に保存する必要があります。ユーザーが次のリクエストを行うと、ID がコレクション内にあるかどうかを確認し、権限を更新するか、ユーザーをログアウトできます。
もう 1 つの方法は、現在ログインしているすべてのユーザーのアクセス許可オブジェクトを静的コレクションとそのセッション変数に保持することです。そうすれば、そのユーザーの Session オブジェクトにアクセスせずに権限オブジェクトを変更できます。
もちろん、Web アプリケーションで静的変数を使用する場合は、通常の予防措置が必要です。複数のスレッドがアクセスできるため、アクセスを同期する必要があります。また、Alexei Levenkov が指摘したように、複数のサーバーがある場合は、サーバー間でデータの同期を維持する必要があります。
の特定の部分を削除するには、次のようSession
に を使用Session.Remove()
します。
Session.Remove("YourKey");
注: これにより、 から値とキーが削除されますが、値のみを削除してキーを残す をSession
使用する人がいる場合があります。Session["YourKey"] = null;
これはあなたが望むものかもしれませんし、そうでないかもしれませんが、違いを指摘したかっただけです.