Одна из проблем, с которыми я столкнулся при выполнении сложных задач в браузере, - это автоматические тайм-ауты.
В настоящее время у нашего сайта скользящий срок действия 30 минут. Обычно это не проблема, потому что мы используем asp.net, и большую часть времени пользователи обновляют одно или два поля, а затем отправляют форму. Это, очевидно, сохраняет сеанс активным. Я боролся с тем, как справиться с этим со значительно более сложными формами / взаимодействием с пользователем, где мало или совсем нет циклов на сервер.
Теперь пользователи могут просматривать отчеты, набирать электронные письма и т. д. На нашем сайте, и я пытаюсь сохранить их сеанс активным, когда они фактически используют браузер, но они не отправляют информацию обратно. Я бы обошелся без скользящего истечения срока действия, но это требование, поэтому я придерживаюсь его. Большинство наших пользователей находятся за пределами организации, поэтому я не могу использовать какую-либо форму SSO.
Есть ли у кого-нибудь изящное решение (я даже выберу уродливое, если оно сработает), или мне не повезло?





Мы недавно прошли через это в моей организации. Хотя это не лучшее решение, и попадание в нужный сеанс в нескольких окнах браузера является грубым, мы поместили таймер обратного отсчета на нашу страницу, включили кнопку, которая просто возвращалась и нажимала на сервер для перезапуска сеанса, а также предоставила пользователю со всплывающим окном JavaScript (любимая часть решения пользователя) с сообщением о том, что сеанс был, скажем, через пять минут после тайм-аута, и нажатием кнопки «ОК» для перезапуска. Затем кнопка нажимала на сервер, чтобы перезапустить сеанс, перезапустить таймер на базовой странице, закрыть всплывающее окно, и базовая страница вообще не нуждалась в обновлении.
Попросите браузер периодически пинговать сервер через Ajax, чтобы поддерживать сеанс. Большинство сайтов делают что-то полезное в этом пинге, например, сохраняют черновик сообщения пользователя.
Ах, давняя проблема нежелания увеличивать время сеанса из-за более высокого использования памяти.
Один из ответов - также установить cookie, срок действия которого истекает через день, который сообщит системе, что она все еще запоминает пользователя. Это, среди прочего, и делает eBay.
Эриксон на правильном пути.
В областях сайта, которые подвержены тайм-ауту сеанса из-за «сложных форм / взаимодействия с пользователем, где мало или вообще нет циклических обращений к серверу», вы можете установить контроль активности, чтобы продолжать пинговать сервер, таким образом, сохраняя сеанс. живой.
Здесь - это образец элемента управления, который вы можете использовать или использовать в качестве основы для написания собственного кода.