Как следует обрабатывать тайм-ауты сеансов при использовании веб-элементов управления AJAX на странице Aspx? - PullRequest
1 голос
/ 02 ноября 2008

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


Я работал над веб-приложением ASP.NET, которое использует элементы управления AJAX Control Toolkit для повышения удобства использования приложения. Кроме того, приложение является серьезным бизнес-приложением, которое требует безопасности, включая шифрование, аутентификацию и авторизацию. А сеанс HTTP - это сеанс в режиме InProc, срок действия которого истекает через время по умолчанию 20 минут.

Это, конечно, означает, что если пользователь покидает страницу в своем браузере более 20 минут, сеанс истекает, и любое сообщение обратно на сервер перенаправляет браузер на страницу входа. Однако, если страница, например, содержит элемент управления AutoCompleteExtender из AJAX Control Toolkit , пользователь может вернуться в свой браузер и начать использовать функциональные возможности расширителя, что требует скрытого действия. обратные вызовы, но поймет, что элемент управления просто не работает - нет ошибки, не перенаправление на страницу входа!?


Как я уже сказал, у меня нет решения, поэтому я в итоге поместил SessionExpiredMonitor (от Herr Ziffer ) на все мои страницы (в моей MasterPage), что приводит к на каждой странице автоматический выход через 19 минут, а затем перенаправление браузера на страницу входа. Тем не менее, я не считаю это решением, поэтому, если вы можете понять это, пожалуйста, дайте мне знать. Большое спасибо.

Ответы [ 3 ]

1 голос
/ 02 ноября 2008

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

0 голосов
/ 03 ноября 2008

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

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

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

0 голосов
/ 03 ноября 2008

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

...