Ответ 1
Сообщите серверу о том, что пользователь активно вводит информацию. Например, отправьте сообщение на сервер, если пользователь нажимает клавишу TAB или нажимает мышью на поле. Окончательное решение зависит от вас.
В настоящее время я создаю внутреннее веб-приложение, используемое в местоположении типа factory/store. Пользователи будут делиться одним компьютером между несколькими людьми, поэтому нам нужно иметь достаточно короткий тайм-аут сеанса, чтобы остановить людей, блуждающих и оставив приложение зарегистрированным, где кто-то еще может прийти на компьютер и сделать что-то под прежним именем пользователя.
Проблема с этим заключается в том, что сеанс может затягиваться, пока пользователь вводит информацию в форму, особенно если они занимают много времени.
Как вы справитесь с этим в удобной для пользователя форме?
Сообщите серверу о том, что пользователь активно вводит информацию. Например, отправьте сообщение на сервер, если пользователь нажимает клавишу TAB или нажимает мышью на поле. Окончательное решение зависит от вас.
Используйте AJAX для регулярного заполнения содержимого частично заполненной формы, чтобы они не потеряли работу, если они загружаются системой. Если вы это сделаете, используйте AJAX, чтобы удержать сессию от тайм-аута, если они тратят время на ввод.
Лучшим советом, вероятно, было бы попросить пользователей закрыть окно браузера, как только они будут завершены. С использованием сеансовых файлов сеанс автоматически завершается, когда браузер закрыт или в противном случае на 30-минутный тайм-аут (можно изменить afaik).
Поскольку по умолчанию нет взаимодействия между браузером и сервером после загрузки страницы, вам придется иметь javascript, который свяжется с сервером в фоновом режиме на страницах форм, чтобы обновить сеанс, но это тоже кажется слишком большая проблема для такой незначительной проблемы.
Если тайм-аут сеанса настолько короткий, что у пользователя нет времени для заполнения формы, я бы поставил AJAX script, который делает HTTP-запрос на сервер каждые несколько минут, чтобы сохранить сеанс в живых. Я бы сделал это только на страницах, которые пользователь должен что-то заполнить или уже начал что-то заполнять.
Другим решением было бы использовать напоминание таймаута сеанса script, в котором появится диалоговое окно, напоминающее пользователю о том, что сеанс близок к тайм-ауту. Всплывающее окно должно отображать "Выход" и "Продолжить использование приложения", что делает запрос ajax для обновления времени сеанса.
Возможно, в этом случае может быть полезным процесс javascript keep-alive. Если script захватывает некоторые ключевые триггеры, он отправляет на сервер сообщение "Я все еще набираю", чтобы сохранить сеанс в активном режиме.
Считаете ли вы, что вы разбиваете форму на более мелкие куски?
Отслеживайте тайм-аут и публикуйте всплывающее окно, чтобы уведомить пользователя о том, что их текущий сеанс истечет, и введите кнопки "ОК" или "Отмена". ОК, чтобы сохранить сеанс (т.е. reset счетчик еще на 5 минут или 10 минут - независимо от того, что вам нужно) - или -Отменить, чтобы сеанс продолжал обратный отсчет до нуля и, таким образом, заканчивался.
Это один из многих способов справиться с этим.
Использование JavaScript-потока для открытия сеанса - это плохая идея.
Это против идеи тайм-аута сеанса, которая существует для освобождения некоторых ресурсов, если нет пользователя перед приложением.
Я думаю, вам нужно настроить тайм-аут сеанса с более точным временем, чтобы заполнить форму в "обычном обычном использовании".
Вы также можете быть активными:
Он считает, что лучше всего, потому что он не позволяет пользователю заполнять сложную форму для ничего и обрабатывать случай, когда пользователь ушел.
В качестве альтернативы техническим решениям вы можете сделать свое приложение таким образом, чтобы каждый раз, когда выполнялась определенная работа, например, заполняя форму, вы спрашиваете у пользователя, хочет ли он продолжить выполнение другой работы или если он сделанный. У Yould мог быть начальный экран с опциями меню, и если пользователь выбирает вариант, он сначала должен ввести свои учетные данные.
Или введите поле пароля в форму. Зависит от того, сколько форм необходимо заполнить в сеансе.
Когда пользователь отправляет форму и время ее сессии заканчивается, вы должны убедиться, что вы сохранили значения формы где-нибудь, а затем попросите пользователя снова войти в систему. После повторной проверки подлинности вы можете повторно отправить форму (поскольку ни одна из их данных не будет потеряна).
Я разработал нечто, требующее очень длительной сессии. Пользователь вошел в систему на странице, когда он сидел на машине и после выполнения своей работы выходил из системы. Теперь он может использовать систему в течение нескольких минут или в течение нескольких часов. Чтобы сохранить сеанс до тех пор, пока он не выйдет из системы, я использовал таймер с javascript, он отправился на сервер и обновил метку anthem с текущим временем на сервер.