Как предотвратить сброс времени ожидания сеанса, когда содержимое UpdatePanel обновляется событием Timer? - PullRequest
1 голос
/ 21 апреля 2009

В нашем приложении ASP.net Ajax есть несколько страниц, которые автоматически обновляют содержимое UpdatePanels на основе события таймера, но проблема в том, что у нас есть требование тайм-аута веб-сессии, и автоматическое обновление предотвращает это.

Есть ли способ запретить событию обратной передачи по таймеру изменить веб-сеанс или любое другое альтернативное решение, чтобы разрешить тайм-ауту веб-сеанса при автоматическом обновлении содержимого UpdatePanel?

Вот пример, иллюстрирующий эту проблему. Я установил тайм-аут сеанса на 3 минуты и у меня есть таймер в UpdatePanel, который тикает каждую минуту и ​​изменяет содержимое UpdatePanel в зависимости от текущего состояния. После входа в систему я перехожу на эту страницу и ничего не делаю в течение 5 минут, а затем пытаюсь нажать на другую страницу, и я все еще вошел в систему, поскольку время сеанса не истекло.

1 Ответ

2 голосов
/ 21 апреля 2009

Вы можете отслеживать активность пользователя на стороне клиента. Если нет движения мыши и т. Д., Вы можете выйти из системы с помощью класса <a href="http://msdn.microsoft.com/nb-no/library/bb310861(en-us).aspx" rel="nofollow noreferrer">Sys.Services.AuthenticationService</a> (часть Microsoft AJAX Library 1.0). Вы можете получить подтверждение до того, как вы действительно выйдете из системы, чтобы пользователь мог отменить его, если он присутствует. Выйдя из системы, вы можете отправить пользователю сообщение о том, что он автоматически вышел из системы из-за неактивности.

Как мое решение решит ваш сценарий:

Вы устанавливаете тайм-аут сеанса на 3 минуты и в UpdatePanel есть таймер, который тикает каждую минуту и ​​изменяет содержимое UpdatePanel в зависимости от текущего состояния. После входа вы переходите на эту страницу и ничего не делаете. После 3 минут бездействия вы выскакиваете пользователю подтверждение с просьбой отменить автоматический выход с помощью Sys.Services.AuthenticationService. Если пользователь по-прежнему не предпринимает никаких действий, вы выходите из него через несколько секунд. Вы выводите «сообщение о выходе», которое пользователь увидит, когда вернется в браузер через 5 минут. Когда он нажимает на другую страницу, он не авторизуется.

...