2012-01-04 24 views
2

期限が切れているかどうかチェックしたい。 これは私が決めたことですIsServerExpiredというアクションを作成し、ブール値を含むjsonオブジェクトとリダイレクトURLを返します。MVC 2でajaxでセッションの有効期限が切れる

SO Javaスクリプト機能が、指定された時間間隔で、このアクションにAJAXリクエストを行います。.. 私はいくつかの基本的な質問がある..

私は、Ajaxリクエストを送信1.If、私はそれがリフレッシュすると思いますセッション時間。したがって、このメソッドを使用している場合、セッションは有効期限切れになりません。私は正しい?

それは私がセッションを確認することができますどのように更新された場合、私はあなたがASP.NETのセッションと認証クッキーの間で混乱していると思うポーリング

答えて

3

セッションが終了すると、ユーザーをログアウトするより簡単な方法があります。

クライアントサイドのどこかにSessionTimeoutを保存し、クライアント側のタイマーを実行して、タイマーがリダイレクトした後にユーザーをログアウトすることができます。

ここは例です。 ModelここにはSessionTimeout値が含まれています。

$(document).ready(function() { 
    var timeOutInMinutes = @Model; 
    if(timeOutInMinutes > 0) 
    { 
    setTimeout(function() { 
     window.location = 
       '@Url.Action("Logout", "Authentication", new {area=""})'; 
    },timeOutInMinutes * 1000 * 60); 
    } 
}); 

よりユーザーフレンドリーな方法は、(セッションタイムアウト15分は、その後、14分後にそれを表示した場合)、そのセッションは1分wihtin期限切れになりますと言うだろう、ユーザーができるリフレッシュページになりますポップアップを表示することです。仕事を続ける。

+0

ページロード後にajax呼び出しを行っている場合、このメソッドはそれを考慮しません。ではない?それは私のシナリオの欠点です。 – Lijo

+0

はい、このメソッドはweb.configのSession Timeout値に従ってクライアント側で待機します。 –

1

を使用して有効期限が切れます。私はあなたがここで認証クッキーの有効期限について話していると思われます。あなたのweb.configでslidingExpirationをtrueに設定した場合、AJAXリクエストをポーリングするとタイムアウトが更新され、適切でないようになります。 Phil Haackは、AJAXコールの認証クッキーの有効期限を検出するための非常に洗練された方法をthis blog postで説明しました。

関連する問題