Автоматический тайм-аут использования веб-клиента - PullRequest
0 голосов
/ 05 сентября 2008

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

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

Теперь пользователи могут просматривать отчеты, печатать электронные письма и т. Д. На нашем сайте, и я борюсь с тем, как сохранить свою сессию активной, пока они на самом деле используют браузер, но они не отправляют информацию обратно. Я бы обошелся без скользящего выдоха, но это требование, поэтому я застрял с ним. Большинство наших пользователей находятся за пределами организации, поэтому я не могу использовать любую форму SSO .

У кого-нибудь есть изящное решение (я даже выберу уродливое, если оно работает), или мне не повезло?

Ответы [ 4 ]

4 голосов
/ 05 сентября 2008

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

2 голосов
/ 05 сентября 2008

Мы недавно прошли через это в моей организации. Хотя это и не лучшее решение, и столкновение с нужным сеансом в нескольких окнах браузера является грубым, мы установили таймер обратного отсчета на нашей странице, включили кнопку, которая только что вернулась, и нажали на сервере, чтобы перезапустить сеанс, а также предоставили пользователю с помощью всплывающего окна JavaScript (любимая часть решения пользователя) с сообщением о том, что сеанс был, скажем, через пять минут после истечения времени ожидания, и нажмите кнопку «ОК» для перезапуска. Затем кнопка будет нажимать на сервер, чтобы перезапустить сеанс, перезапустить таймер на базовой странице, закрыть всплывающее окно, и базовая страница не будет обновляться вообще.

1 голос
/ 05 сентября 2008

Эриксон на правильном пути.

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

Здесь - это образец элемента управления, который вы можете использовать или использовать в качестве основы для своего собственного кодирования.

0 голосов
/ 05 сентября 2008

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

Один из ответов - установить cookie-файл, срок действия которого истекает, например, через день, когда система будет все еще помнить пользователя. Именно этим и занимается eBay.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...