2012-03-02 20 views
4

ユーザーが最初に何かをクリックするのを待たずにタイムアウトが発生した場合、ログインページにリダイレクトすることは可能ですか? 今、タイムアウトが発生すると、ページのユーザーはまだ表示されていますが、ユーザーが何かをクリックするとログインページに移動します。おかげさまで ASP.Netフォーム認証 - タイムアウト時にログインページに移動

答えて

5

セッションの有効期限が切れている場合は、クライアント側でチェックする必要があります。最も簡単な方法は、ページがロードされたときにJavaScriptを使用してカウントダウンを開始することです。期限が切れたら、ユーザーをログインページに送ります。または、おそらくより良い:ユーザーにセッションの有効期限が切れていることを知らせてください。おそらく、彼をどこかに送ってもあまりにも幸せにならないかもしれないからです。私のオンラインバンキングソフトウェアはまさにそうですが、セキュリティ上の理由からもちろんです。 http://jsfiddle.net/39Sj6/1/

function sessionHasExpired(){ 
    if(confirm("Your session has expired. Do you want to go to the login page")){ 
     window.location = "http://google.com/?q=login"; 
    } 
} 

var sessionTimeInMilliseconds = 1000*60*5; // here: 5 minutes 
setTimeout(sessionHasExpired, sessionTimeInMilliseconds); 

(これはjsfiddleによって禁止されているようjsfiddleでGoogleにリダイレクトされませんが、原則的に、それは動作します)

はここで非常に簡単な例です

+0

ありがとうございました。これはいくつかのページに表示されるいくつかの不安定なデータを持つイントラネットアプリケーションです。したがって、タイムアウト時に自動的にログアウトされるかどうかは気にしません。これを達成するためのサンプルコードをいくつか用意してください。マスターページを使用している場合、カウントダウンスクリプトはマスターページにあるべきですか? – NoBullMan

+0

私は誤って私の代わりにMarkの答えに例を追加しました。この回答にも例を追加しました。あなたがページを出るかどうかをユーザに尋ねたくない場合は、confirm()構造体を使わずに、代わりにwindow.locationを設定するだけです。マスターページに追加できるのは、すべてのページにカウントされる場合です(yes)。そうではなく、もしあなたがajax呼び出しを行っているなら、各ajax呼び出しの後にタイムアウトをリセットするべきです。 –

+0

もう一度ありがとうアンドレ。 2つのこと:OKをクリックしてログインページに行くと、ブラウザの戻るボタンをクリックし、私が行っていた場所に移動して、やっていることをやり続けます。タイムアウトが発生しましたが、私のセッションはまだ生きています。また、マスターページにスクリプトを置くと、ページからページに移動するときにタイマーが0から開始されるのですか? – NoBullMan

0

ええ、Javascriptタイマーとajaxコールでセッション状態をポーリングしてサーバーセッション状態を確認し、ログインページにリダイレクトするか、またはタイマーを指定された制限時間に設定することができます(20分またはセッションタイムアウト)ログインページにリダイレクトします。

+1

サーバーをポーリングすると、セッションがリフレッシュされます。それは、冷蔵庫のドアを開けて、光が本当に消えるかどうかを見るのと同じです。 –

+0

私はGETがセッションをリフレッシュすることを認識していませんでしたが、それは動作しませんでした。セッション除細動器のようなものですが、タイムアウトの代わりになるかもしれません。 :) –

+2

絶対に - "あなたは私の気の利いたセッションで死んではいけない! :-) –

関連する問題