2017-09-15 12 views
1

MVCアプリケーションでは、ユーザーがMachine1にログインしています。同じユーザーがMachine2にもログインしています。その時、私はMachine1からユーザーをログアウトしたいと思い、Machine1からセッションをクリアしたいと思います。これを達成する方法は?ユーザーのセッションを終了する方法

サンプルアプリケーション/コードを提供していただければ幸いです。

助けてください。前もって感謝します。 助けてください。前もって感謝します。

答えて

0

Session.Abandon()はセッションを破棄し、Session_OnEndイベントがトリガーされます。

Session.Clear()は、オブジェクトからすべての値(コンテンツ)を削除するだけです。同じキーを持つセッションはまだ生きています。

したがって、Session.Abandon()を使用すると、特定のセッションが失われ、ユーザーは新しいセッションキーを取得します。たとえば、ユーザーがログアウトしたときなどに使用できます。

ユーザーが同じセッションに残りたい場合(たとえば、彼が再ログインすることを望まない場合)、セッション固有のデータをすべてリセットするには、Session.Clear()を使用します。

0

まず、ユーザーが正常にログインした後、SessionId CurrentDateTimeとUserIdをデータベースの特別なテーブル、たとえば "LoginHistory"に保存することをお勧めします。次に、現在のユーザIDの「LoginHistory」から日時順に並べ

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e); 

プルトップ1行のGlobal.asaxの中で、現在のユーザのセッションIDと、データベースからセッションID値を比較します。

彼らが異なっている場合、現在のユーザーのログアウトあなたのログアウト・アクションで

FormsAuthentication.SignOut(); 
FormsAuthentication.RedirectToLoginPage(); 
0

使用これは、それはここでは

Session.Clear(); 

か、他

session["YourSessionKey"]=null; 
0

を助けるかもしれいくつかのシナリオがありますどのメソッドがkillセッションに使用されるかを指定します。

Session.Remove(yoursession); - >セッション状態コレクションから項目を削除します。

Session.RemoveAll() - >セッションコレクションからすべてのアイテムを削除します。

Session.Clear() - >セッションコレクションからすべてのアイテムを削除します。注:ClearとRemoveAllには違いはありません。 RemoveAll()はClear()を内部的に呼び出します。

Session.Abandon() - >現在のセッションをキャンセルします。 CookiesSupportedがfalseの場合

あなたの条件によると、これはより良いでしょう

FormsAuthentication.SignOut(); 
FormsAuthentication.RedirectToLoginPage(); 

サインアウト方法は、CookieまたはURLからフォーム認証チケット情報が削除されます。 SignOutメソッドをRedirectToLoginPageメソッドと組み合わせて使用​​すると、あるユーザーをログアウトして別のユーザーがログインできるようになります。

参考にしてください LINK

関連する問題