0

私はセッションベースのプロジェクトに取り組んでいる最中です。銀行と同じように、小切手を作成して、セッションのタイムアウトを阻止する機能をユーザーに提供すると考えていました。

認証が必要な空白のページをチェックする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);
    });
}
4

2 に答える 2

1

これは意味がありますか?setIntervalはブラウザをダウンさせますか?

これは正常に機能するはずです。間隔がかなり大きく(数秒から1分)、反復ごとにグローバルデータ構造のサイズが大きくならない限り、ブラウザーがダウンすることはないと思います。

余談ですが、ユーザーの操作に基づいてIntervalをクリアする最も簡単な方法は何ですか?すべてのキー押下やマウスイベントをチェックする必要がありますか?または、ユーザーがページを操作しているかどうかを確認するためのより広範な方法がありますか(フォーカスチェックなど)?

コンテナなどのトップレベルのページ要素にいくつかのイベントハンドラを追加するdivと役立つ場合があります。

于 2009-12-03T16:21:37.713 に答える
1

それは完全に理にかなっており、すでに登録されているときにもう一度登録しないように注意する限り、setIntervalがブラウザを停止させることはありません。

clearInterval1つの特定のボタン(「いいえ、ブラウザをポーリングしない」または「ログアウト」)をクリックするだけで実行したいので、最後の段落で問題がよくわかりません...?

それ以外は、401時に追加します。ログイン画面に更新しないでください。セッションが失われたように見えることをユーザーに通知するだけで、ユーザーは自分で作業中のものを保存するか、新しいタブで再度ログインするかを自分で決めることができます。

于 2009-12-03T16:21:41.877 に答える