Наше приложение выходит из системы через 30 минут и перенаправляется на страницу входа в систему, я задаю время ожидания сеанса в web.xml и используя requestProcessor для перенаправления. Я хочу показать пользователю сообщение с сообщением ваш сеанс истек, как только сессия закончится, как я могу это сделать. Я хотел бы высветить сообщение об ошибке на странице «Сессия - время ожидания, пожалуйста, войдите снова». Тогда как я могу определить, что сеанс - это тайм-аут? будут ли какие-либо методы запускаться автоматически?Автоотключение после окончания сеанса
ответ
Создайте проверку активности, которая проверяет каждую минуту, если какая-либо деятельность пользователя произошла (mouseclick, keypress) и выполняет биение на стороне сервера, чтобы сохранить сеанс в активном состоянии, когда пользователь активен, и ничего не делает, когда пользователь не выполняет активный. Если в течение 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>
Servlet
Создать который прослушивает /heartbeat
и делает в основном только следующее:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
request.getSession();
}
продержать сессию живой.
Когда вы храните зарегистрированного пользователя в сеансе, он будет «автоматически» выходить из системы всякий раз, когда истекает срок действия сеанса. Поэтому вам не нужно вручную выходить из системы пользователем.
Если вы используете сеансы сервлетов, вы можете проверить, является ли сеанс, возвращаемый jsp/servlet, новым, используя метод isNew(). Если да, то срок действия пользователя истек, и вы можете отобразить соответствующие сообщения.
сообщение об окончании сеанса пользователя должно отображаться только после истечения тайм-аута, в вашем случае оно будет отображаться даже после выхода из системы, которое мне не нужно – sarah
Создать класс прослушивателя, реализующий HttpSessionListener
и определить его в web.xml
Это уведомит Вас, когда сессия будет уничтожен. Используйте метод sessionDestroyed()
.
Смотрите полный пример здесь:
http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/
Вышеупомянутое решение не заставит браузер отображать диалоговое окно. –
Вышеупомянутое решение заставит приложение запрашивать сообщение даже после выхода из системы, оно не проверяет время истечения срока действия, скажем, 30 минут и покажет сообщение – sarah
включать в яваскрипте функцию полезности внутри вашей JSP и пинг сервера каждые 31 минут. Вышеупомянутая функция утилиты должна использовать внутреннюю функцию setTimeout() JS.
setTimeout ("checkServerSession()", /* intervalInMilliSeconds */ 31000);
Обратите внимание, что
checkServerSession()
регулярная функция JS, которая может срабатывать HTTP-запросов. Если запрос является успешным сеансом, в противном случае отображается запрос пользователю.
. Дайте мне знать пример, как это может быть функционировать. – sarah
- 1. Ошибка после окончания сеанса
- 2. Попытка выйти из сеанса после окончания сеанса
- 3. как сбросить данные сервлета после окончания сеанса?
- 4. Автоматический повторный вход после окончания сеанса
- 5. страница не перенаправляется после окончания сеанса
- 6. Удаление файла с сервера после окончания сеанса
- 7. Перенаправление после окончания сеанса в php
- 8. PHP хранит переменную даже после окончания сеанса
- 9. Поверхностный компонент не отвечает после окончания сеанса
- 10. Как удалить таймер после окончания сеанса?
- 11. установить время окончания сеанса
- 12. Что происходит с идентификатором сеанса после окончания сеанса?
- 13. Время окончания сеанса
- 14. Обнаружение окончания сеанса
- 15. Предотвращение окончания сеанса?
- 16. UITableViewCell автоотключение
- 17. Автоотключение объектов?
- 18. Отслеживание загадочной ошибки окончания сеанса
- 19. Узел/Экспресс: событие окончания сеанса?
- 20. Безопасно хранить ссылку на Entity Bean после окончания сеанса?
- 21. Как Apache куратор пытается восстановить соединение после окончания сеанса?
- 22. Перенаправление после окончания сеанса для вызова ajax/json
- 23. как SignOut от аутентификации формы после окончания сеанса
- 24. Не перенаправляется на страницу входа после окончания сеанса в mvc4
- 25. Как обрабатывать перенаправление в AJAX после окончания сеанса?
- 26. Обращение ReturnUrls на POST после окончания сеанса MVC3
- 27. Как сделать Shiny вернуть память после окончания сеанса?
- 28. javascript: разрешить пользователю входить в систему после окончания сеанса связи
- 29. Нужно ли нам удалять файлы cookie после окончания сеанса?
- 30. Laravel 5 обновить страницу регистрации после окончания сеанса
. Я хочу, чтобы отображалось предупреждающее сообщение. после 30 минут, как я могу изменить вышеупомянутый скрипт, я определил время сеанса в web.xml – sarah
Этот скрипт показывает всплывающее окно, даже если приложение используется. – sarah
Это может произойти, если в одном сеансе открыто несколько окон. Это был основной пример запуска. Вам нужно будет сделать еще несколько шагов. Прогоните ajaxical опросы на стороне сервера, чтобы поддерживать сеанс до тех пор, пока пользователь активен. Вы можете найти пример в [этом другом ответе меня] (http://stackoverflow.com/questions/2319020/mvc-with-jquery-handling-session-expire/2319211#2319211). – BalusC