Автоматический Выход однажды сессия истекает

Наши журналы приложения прочь после 30 минут и перенаправляются к странице входа в систему, я указываю тайм-аут сессии в web.xml и использую requestProcessor для перенаправления. Я хочу показать пользователю сообщение, говоря, что Ваша сессия истекла, после того как сессия истекает, как я могу сделать это. Автоматический выход? Я хотел бы запросить сообщение об ошибке на странице "The session is timeout, please login again". Затем то, как я мог обнаружить сессию, является тайм-аутом? какие-либо методы инициируют автоматически?

5
задан Benjamin 24 May 2014 в 00:02
поделиться

4 ответа

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

Вот начальный пример с небольшой помощью jQuery для привязки событий щелчка и нажатия клавиш и запуска запроса ajax.

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
    $(document).ready(function() {
        $.active = false;
        $('body').bind('click keypress', function() { $.active = true; });
        checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute.
    });

    function checkActivity(timeout, interval, elapsed) {
        if ($.active) {
            elapsed = 0;
            $.active = false;
            $.get('heartbeat');
        }
        if (elapsed < timeout) {
            elapsed += interval;
            setTimeout(function() {
                checkActivity(timeout, interval, elapsed);
            }, interval);
        } else {
            window.location = 'http://example.com/expired'; // Redirect to "session expired" page.
        }
    }
</script>

Создайте сервлет , который прослушивает / heartbeat и в основном выполняет следующие действия:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    request.getSession();
}

для поддержания активности сеанса.

Когда вы сохраняете вошедшего в систему пользователя в сеансе, он будет «автоматически» выходить из системы по истечении срока сеанса. Таким образом, вам не нужно вручную выходить из системы.

10
ответ дан 18 December 2019 в 16:35
поделиться

Включите служебную функцию javascript в свой JSP и проверяйте связь с сервером каждые 31 минуту. Вышеупомянутая служебная функция должна использовать внутреннюю функцию JS setTimeout ().

setTimeout ( "checkServerSession()",  /* intervalInMilliSeconds */ 31000);

Обратите внимание, что

checkServerSession ()

- это обычная функция JS, которая может запускать HTTP-запросы. Если запрос является успешным, сеанс существует, в противном случае покажите подсказку пользователю.

0
ответ дан 18 December 2019 в 16:35
поделиться

Если вы используете сессии сервлетов, вы можете проверить, является ли сессия, которую возвращает jsp / сервлет, новой, используя метод isNew(). Если да, то сессия пользователя истекла, и вы можете вывести соответствующие сообщения.

0
ответ дан 18 December 2019 в 16:35
поделиться

Создайте класс Listener, реализующий HttpSessionListener , и определите его в web.xml

. Это будет уведомлять вас, когда любой сеанс будет разрушен. Используйте метод sessionDestroyed () .

См. Полный пример здесь:

http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/

2
ответ дан 18 December 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: