2010-12-07 40 views
0

セッションタイムアウトに2分が残ったときにユーザーに確認を求めます。ユーザがを入力した場合、は、ユーザがNoを選択した場合にフォームデータを失うことなく現在のセッションをリフレッシュし、セッションをログアウトします。フォームデータを失うことなく現在のセッションをリフレッシュする方法と、残り2分をキャプチャする方法を知りたい。私はJQueryでAsp.Net MVC 2を使用しています。フォーム認証を使用していないもう1つの点Asp.Net MVC 2でセッションタイムアウトが発生したときの確認

+0

あなたは何の話をしていますか?それはHttpSessionですか?スライド有効期限は有効になっていますか?また、セッション*をログアウトするとどういう意味ですか? –

答えて

1

まあ、セッションはリクエストごとにリフレッシュされます。セッションのタイムアウトはSession.Timeoutにあります。あなた、あなたのマスターページにこのような何かを行うことができます:あなたはAJAXを使用している場合

<script type="text/javascript"> 
function keepAlive() { 
    window.clearTimeout(window.sessionKeepAlive); 
    window.sessionKeepAlive = window.setTimeout(function() { 

     if(confirm('refresh session?')) { 
      // submit ajax request 
     } else { 
      // logout 
     } 

    }, <%= (Session.Timeout - 2) * 60 * 1000 %>); 
} 

keepAlive(); 
</script> 

を次に、あなたは、すべてのAJAXの完全なコールバックでタイムアウトをリセットする必要があります。

$(document).ajaxComplete(keepAlive); 

それは難しいだろうこれを100%信頼できるものにする。確認コールバック内のAJAXリクエストが実際に状態サーバーに接触するようにし、そのAJAXリクエストが失敗したときの処理を処理する必要があります。これらは、あなたがこのスクリプトを持っていてもセッションが期限切れになる可能性のあるものです。

コインの反対側は、これが必要以上に頻繁にポップアップする箇所です。たとえば、javascriptを使用してDOMに画像を追加していて、その画像の取得があなたの状態に触れている場合、セッションは更新されていますが、そのリクエストはJavaScriptのタイムアウトをリセットしません。

関連する問題