私はセッションベースのプロジェクトに取り組んでいる最中です。銀行と同じように、小切手を作成して、セッションのタイムアウトを阻止する機能をユーザーに提供すると考えていました。
認証が必要な空白のページをチェックするsetIntervalを作成することを考えていました。タイマーが終了時間に近づいている場合は、セッションが終了に近づいていることをユーザーに通知するダイアログが表示されます。「ログインしたまま」ボタンを押すとタイマーがリセットされ、ログオフするオプションも表示されます。設定された間隔がチェッカーページから「401」を取得すると、現在のページがログイン画面に更新されます。
これは意味がありますか?setIntervalはブラウザをダウンさせますか?
余談ですが、ユーザーの操作に基づいてIntervalをクリアする最も簡単な方法は何ですか?すべてのキー押下やマウスイベントをチェックする必要がありますか?または、ユーザーがページを操作しているかどうかを確認するためのより広範な方法がありますか(フォーカスチェックなど)?
短歌。
そのため、使用しているフレームワークに問題がありました。セッションの処理があまり良くないため、ログインからの時間に基づいて常にタイムアウトするのではなく、セッションのタイムアウトを更新することに問題があるようです。前回の活動以降に。とにかく、それを処理しました。私が今疑問に思っている問題は、セッションがsetIntervalを介してまだ認証されているかどうかを確認することにより、セッションがチェックを介して更新されるため、セッションがタイムアウトすることはないということです。または、私は何かが欠けていますか?
javascriptだけで処理することにしました。フレームワーク構成でタイムアウトをに設定し、タイムアウトを排他的never
に処理しています。setTimeout
function alerter(msg){
//warn user session about to expire; give opportunity to save
}
function killSess(){
window.location = '/logout';
}
function sessTimer(time){
timerID = window.setTimeout('killSess();',time);
}
function observe(div){
Event.observe(div, 'click', function(){
clearTimeout(timerID);
sessTimer(30000);
});
Event.observe('bodyDiv', 'keydown', function(e){
clearTimeout(timerID);
sessTimer(30000);
});
}