Лучший способ справиться с тайм-аутом сеанса в веб-приложениях?

В настоящее время я создаю внутреннее веб-приложение, используемое в местоположении типа factory/store. Пользователи будут делиться одним компьютером между несколькими людьми, поэтому нам нужно иметь достаточно короткий тайм-аут сеанса, чтобы остановить людей, блуждающих и оставив приложение зарегистрированным, где кто-то еще может прийти на компьютер и сделать что-то под прежним именем пользователя.

Проблема с этим заключается в том, что сеанс может затягиваться, пока пользователь вводит информацию в форму, особенно если они занимают много времени.

Как вы справитесь с этим в удобной для пользователя форме?

Ответ 1

Сообщите серверу о том, что пользователь активно вводит информацию. Например, отправьте сообщение на сервер, если пользователь нажимает клавишу TAB или нажимает мышью на поле. Окончательное решение зависит от вас.

Ответ 2

Используйте AJAX для регулярного заполнения содержимого частично заполненной формы, чтобы они не потеряли работу, если они загружаются системой. Если вы это сделаете, используйте AJAX, чтобы удержать сессию от тайм-аута, если они тратят время на ввод.

Ответ 3

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

Поскольку по умолчанию нет взаимодействия между браузером и сервером после загрузки страницы, вам придется иметь javascript, который свяжется с сервером в фоновом режиме на страницах форм, чтобы обновить сеанс, но это тоже кажется слишком большая проблема для такой незначительной проблемы.

Ответ 4

Если тайм-аут сеанса настолько короткий, что у пользователя нет времени для заполнения формы, я бы поставил AJAX script, который делает HTTP-запрос на сервер каждые несколько минут, чтобы сохранить сеанс в живых. Я бы сделал это только на страницах, которые пользователь должен что-то заполнить или уже начал что-то заполнять.

Другим решением было бы использовать напоминание таймаута сеанса script, в котором появится диалоговое окно, напоминающее пользователю о том, что сеанс близок к тайм-ауту. Всплывающее окно должно отображать "Выход" и "Продолжить использование приложения", что делает запрос ajax для обновления времени сеанса.

Ответ 5

Возможно, в этом случае может быть полезным процесс javascript keep-alive. Если script захватывает некоторые ключевые триггеры, он отправляет на сервер сообщение "Я все еще набираю", чтобы сохранить сеанс в активном режиме.

Ответ 6

Считаете ли вы, что вы разбиваете форму на более мелкие куски?

Ответ 7

Отслеживайте тайм-аут и публикуйте всплывающее окно, чтобы уведомить пользователя о том, что их текущий сеанс истечет, и введите кнопки "ОК" или "Отмена". ОК, чтобы сохранить сеанс (т.е. reset счетчик еще на 5 минут или 10 минут - независимо от того, что вам нужно) - или -Отменить, чтобы сеанс продолжал обратный отсчет до нуля и, таким образом, заканчивался.
Это один из многих способов справиться с этим.

Ответ 8

Использование JavaScript-потока для открытия сеанса - это плохая идея.

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

Я думаю, вам нужно настроить тайм-аут сеанса с более точным временем, чтобы заполнить форму в "обычном обычном использовании".

Вы также можете быть активными:

  • с предупреждением JavaScript, отображающим предупреждение без вмешательства (не всплывающее окно) пользователю до истечения времени ожидания, в котором говорится, что сеанс истечет в ближайшее время (и даст ссылку на отправку ajax-запроса на reset таймаут и удалите это предупреждение - это позволит пользователю потерять форму, которую он в настоящее время печатает),
  • а также второй "поток" JavaScript, который, если сеанс истек, перенаправляет на страницу входа с сообщением о том, что сеанс истек.

Он считает, что лучше всего, потому что он не позволяет пользователю заполнять сложную форму для ничего и обрабатывать случай, когда пользователь ушел.

Ответ 9

В качестве альтернативы техническим решениям вы можете сделать свое приложение таким образом, чтобы каждый раз, когда выполнялась определенная работа, например, заполняя форму, вы спрашиваете у пользователя, хочет ли он продолжить выполнение другой работы или если он сделанный. У Yould мог быть начальный экран с опциями меню, и если пользователь выбирает вариант, он сначала должен ввести свои учетные данные.

Или введите поле пароля в форму. Зависит от того, сколько форм необходимо заполнить в сеансе.

Ответ 10

Когда пользователь отправляет форму и время ее сессии заканчивается, вы должны убедиться, что вы сохранили значения формы где-нибудь, а затем попросите пользователя снова войти в систему. После повторной проверки подлинности вы можете повторно отправить форму (поскольку ни одна из их данных не будет потеряна).

Ответ 11

Я разработал нечто, требующее очень длительной сессии. Пользователь вошел в систему на странице, когда он сидел на машине и после выполнения своей работы выходил из системы. Теперь он может использовать систему в течение нескольких минут или в течение нескольких часов. Чтобы сохранить сеанс до тех пор, пока он не выйдет из системы, я использовал таймер с javascript, он отправился на сервер и обновил метку anthem с текущим временем на сервер.