2016-04-15 22 views
0

私はMVCアプリケーションを使用して認証を管理しています。私が持っている問題は、デフォルトでクローズした後にバックグラウンドで実行されるため、実際にセッションを終了させることがないためです。私はハングアウトなどを殺すので、この設定を変更するすべてのエンドユーザーを強制したくありません。私はこれを処理するために任意の標準のweb.config設定を使用することができますか、または私はajaxポーリング間隔を作る必要があるクッキーの有効期限を更新し続けるには?MVC管理セッション

+0

私はあなたに何を聞いているのか分かりません –

+0

MVCを使って知りたいのは、ブラウザを閉じたときに自動的にユーザーセッションを終了させる方法です。つまり、ブラウザを閉じたときにユーザをログアウトさせてください。 – segFault

+0

自分でクッキーを管理していますか?その場合は、セッションクッキーを効果的に作成する 'DateTime.MinValue'にクッキーの有効期限を設定する必要があります。つまり、Chromeがバックグラウンドで実行中のタスクを持っていても、ブラウザが閉じられるとCookieは削除されます。 –

答えて

0

ASP.NETセッションは、クライアント側のhttpセッションCookieとサーバーのセッション記憶域プロバイダの2つのコンポーネントで構成されています。ユーザーがSessionId 1を持っていると仮定します。サーバーからセッション1を削除すると、ユーザーは戻り、SessionId 1で新しいセッションが作成されます。ユーザーがセッションCookieを削除すると、サーバーはセッション1を実行し続けます。

What you '一般的にははお問い合わせできません。サイトやブラウザを終了するときに、ユーザーがサーバーに要求を送信するように強制することはできません。いくつかの状況では/sign-offに要求を送ることができる状況があるjavascript beforeUnloadイベントがあります。明らかなリミッタは、ネットワークアクセス= no messageではありません。

孤立セッションの標準解決策は、セッション掃除ポリシーを使用して孤立セッションをクリーンアップすることです。いくつかの開発者は、永続的なストレージを使用して、ショッピングカートを決して消滅させないように排除することを選択しています。

あなたの目標に達する唯一の妥当な解決策(それでも過度のものです)。 SingalRを使用して、ユーザーとサーバーとの永続的な接続を行い、サーバーからpingを実行します。接続が失敗した場合は、セッションを中止します。これは壊れやすいプロセスになります。ユーザーが切断されていることを間違いなく確認しないと、携帯電話でサイトをブラウズしている間にユーザーがなぜ継続的にログアウトしているのか不思議です。