1

Asp.Net MVC でこれを行うにはどうすればよいですか?

  • Activity Timer : ユーザーがページをナビゲートすると ( を呼び出す何かを実行することを意味しますActionResult)、タイマーがリセットされます。
  • ユーザーが 15 分以上操作を行わないと、プロンプトが表示され、「まだそこにいますか?」と尋ねられます。(はい/ログアウト)、[はい] をクリックすると、アクティビティ タイマーがゼロに戻り、再びカウントを開始します。
  • このアクティビティ タイマーは、ユーザーごとに一意である必要があり、ログアウト時に破棄する必要があります。

どうぞどうぞ!私に辛抱してください!方法がわかりません。

この質問を投稿しましたが、この問題を解決する回答が得られませんでした。だから私は最初からそれをするつもりであり、それを適切に行うための助け/ガイドが必要です.
参照リンクやチュートリアルは大歓迎です!

4

1 に答える 1

1

私はこれをクライアントで処理します。機能をカプセル化するオブジェクトを作成します。

何かのようなもの:

var UserInactivityMonitor = UserInactivityMonitor || {};
UserInactivityMonitor = (function (module) {
    var inactivityIndex;
    var promptIndex;
    var timer;

    module.startInactivityMonitor = function () {
        module.timerTick();
    };

    module.timerTick = function () {
        inactivityIndex--;
        if (inactivityIndex === 0) {
            module.fireInactivityAlert();
        }

        if (inactivityIndex === promptIndex) {
            module.fireIdlePrompt();
        }

        timer = setTimeout(module.timerTick, 1000);
    };

    module.fireIdlePrompt = function () {
        var response = confirm('are you stil there?');
        if (response === true) {
            module.resetInactivityIndex();
        }
    };

    module.resetInactivityIndex = function () {
        inactivityIndex = 15;
        promptIndex = 5;
    };

    module.fireInactivityAlert = function () {
        alert('Inactivity alert!');
    };

    module.initialize = function () {
        module.resetInactivityIndex();
        module.startInactivityMonitor();
    };

    return module;
})(UserInactivityMonitor || {});

inactivityIndex を inactivity イベントが発生するまでの秒数に設定します。promptIndex を、ユーザーがまだそこにいる場合にプロンプ​​トが表示される残りの秒数に設定します。上記のコードは非アクティブ タイムアウトを 15 秒に設定し、残り 5 秒のマークでアイドル プロンプトが呼び出されます。

ページの読み込み時に、非アクティブ タイマーを開始します。

$(function () {
    UserInactivityMonitor.initialize();
});

AJAX リクエストで、カウンターをリセットします。

 $("#fooButton").on('click', function () {
        $.ajax(
            {
                url: $("#buttonClickPostUrl").val(),
                data: {
                    someData: 'data'
                },
                type: 'POST',
                complete: function () {
                    UserInactivityMonitor.resetInactivityIndex();
                }
            });
    });

サーバーがセッション状態を維持している場合は、サーバーに要求を戻してセッションを強制終了し、オプションでブラウザーをイベントの適切なページに誘導する必要があります。これは fireInactivityAlert() 関数で行います。

于 2013-02-09T08:21:16.493 に答える