C # MVC Создание автоматического выхода на основе таймера с помощью jquery? - PullRequest
2 голосов
/ 09 июня 2011

Как мне создать скрипт jquery для автоматического выхода пользователя из системы после определенного периода бездействия? Или есть плагин jquery, который делает это? Это должно было бы сделать что-то вроде:

  1. Создать таймер с setTimeout (например, на 30 минут)
  2. Сбрасывает таймаут каждый раз, когда пользователь взаимодействует со страницей
  3. После истечения срока действия setTimeout используйте ajax для вызова действия / logout на сервере (asp.net mvc)
  4. Показать диалоговое окно модального / лайтбокса, предлагающее пользователю снова войти в систему

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

У вас есть несколько разных аспектов, которые вам нужно рассмотреть здесь.Прежде всего, что произойдет, если пользователь просто закроет браузер или если компьютер, которым пользуется человек, умрет?Если пользователь заходит на страницу в течение 30 минут, должен ли человек все еще входить в систему?

Предположим, что пользователь должен войти в систему в течение 30 минут, несмотря ни на что.Самый простой способ начать - установить тайм-аут для куки-файла аутентификации.Не забудьте обновить время ожидания при обновлении каждой страницы.И используйте таймер jQuery, чтобы проверить, является ли cookie по-прежнему действительным или нет, или просто отслеживайте время входа пользователя в систему.

Итак, таймеры jQuery , вы можете на каждой странице обновлять загрузкуcookie, а затем просто проверьте, выполняется ли таймер / задержка, если это так, удалите cookie и отобразите модальное окно.

Существует множество способов сделать это, использование таймеров - это один из способов.

$(this).oneTime(1800 , function() {
    location.href='/logout'; // redirects to logout page.
});

Еще один подход - использовать для этого проверку на стороне сервера, но вы не получите для этого коробку модели, как я уже сказал, существует множество способов, все зависит от ваших предпочтений.

0 голосов
/ 29 июля 2016

Я знаю, что это очень старый вопрос, но он может быть полезен для тех, кто ищет подобное решение, чтобы выйти из системы пользователя, если они простаивают в течение определенного периода времени

http://www.dotnetfunda.com/articles/show/3130/automatically-logout-when-user-is-idle-for-sometime

Ссылка может исчезнуть, поэтому вот код -

<script>
    $(function () {
        $("body").on('click keypress', function () {
            ResetThisSession();
        });
    });



var timeInSecondsAfterSessionOut = 30; // change this to change session time out (in seconds).
    var secondTick = 0;

    function ResetThisSession() {
        secondTick = 0;
    }

    function StartThisSessionTimer() {
        secondTick++;
        var timeLeft = ((timeInSecondsAfterSessionOut - secondTick) / 60).toFixed(0); // in minutes
    timeLeft = timeInSecondsAfterSessionOut - secondTick; // override, we have 30 secs only 

        $("#spanTimeLeft").html(timeLeft);

        if (secondTick > timeInSecondsAfterSessionOut) {
            clearTimeout(tick);
            window.location = "/Logout.aspx";
            return;
        }
        tick = setTimeout("StartThisSessionTimer()", 1000);
    }

    StartThisSessionTimer();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...