2016-12-25 10 views
1

私はc#mvc Webアプリケーションを持っています。電子メールとパスワードに従って簡単なログインページがあります。今私はそのようなニーズがあります: ユーザーがシステムにログインすると、同じ電子メールアドレスを持つすべてのアクティブなセッションがログアウトします。 これをどうすれば実現できますか?MVCは同じユーザーログイン後にすべてのアクティブセッションをログアウトします

答えて

2

あなたはSession.Abandon()またはClear()は、現在のセッションを放棄するために使用することができますが、複数の人が同じアドレスでログインして存在する場合、これはそれを解決しません。

簡単なチェックは行います。

あなたはその検出をビルドする必要があります。たとえば、ユーザーを表すテーブルのフラグを更新し、他のユーザーのセッションで、テーブルが再ログインした場合は定期的にテーブルをチェックすることができます。ユーザーがログインすると、データベーステーブルにトークンを作成します。有効期限;そのトークンをクッキー内のユーザに関連付ける。ログアウトまたはログインし直すと、その電子メールアドレスに関連付けられているトークンが無効になり、各ユーザーがアプリケーションにアクセスしようとすると、トークンが期限切れになっているかどうかをアプリケーションが拒否する可能性があります。

1

Abandon方法は、(MSDNを)動作するはずです:

Session.Abandon(); 

セッションの使用(MSDN)から特定の項目を削除する場合:

Session.Remove("YourItem"); 

あなただけクリアしたい場合あなたが行うことができる価値:

Session["YourItem"] = null; 

すべてのキーをクリアするには:

Session.Clear(); 

これらのどれもあなたのためにうまくいかない場合、何か怪しげなことが起こっています。値を割り当てている場所を確認し、値をクリアした後に再割り当てされていないことを確認します。

Session["YourKey"] = "Test"; // creates the key 
Session.Remove("YourKey"); // removes the key 
bool gone = (Session["YourKey"] == null); // tests that the remove worked 
関連する問題