Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ASP > Управление временем жизни сессии


Автор: SlavonM 4.8.2009, 17:56
Привет всем!!!

Поделитесь соображениями, пожалуйста, как организовать такую весчь (asp, JavaScript, IIS) :

Пользователь логинится на сайте, работает, доволен...
Решил отойти попить кофе. Приходит, видит попап с сообщением "Бездействие системы 15 минут". 
При его мгновенной реакции (движение мышкой, нажатие кнопки..) продолжает работать, иначе - через 5 минут, активная сессия закрывается.
Т.е., полный жизненный цикл сессии равен 20 минутам.

Технически не представляю пока, как это реализовать, но логически можно рассмотреть вариант, например:

1. Создаем Первую сессию с временем жизни в 20 минут
2. По истечении 15 минут, создаем Вторую сессию с временем жизни в 5 минут
3.1. Пользователь отреагировал - Вторая сессия разрушается, Первая сессия обнуляется - продолжает работать
3.2. Пользователь не отреагировал - по истечении следующих 5 минут - обе сессии разрушаются
+
перехват сообщений

Как обстоят дела с параметризацией в IIS, можно ли программно управлять его настройками (по части сессий)?
Есть ли параметр в IIS, который определяет оставшееся время жизни сессии?

Спасибо

Автор: Crypton 9.8.2009, 21:29
Я подобное делал для одного из своих клиентов, и честно-говоря идейка геморная, но решить можно гуманными способами.

Все решается с javascript (и jQuery), ну и парами пустышек .aspx страниц.

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

А можно и так:
К определенным элементам на странице прикрепить событие на onmousemove/onmouseover/и т.д. и при каждом таком событии можно проверять таймер и соответственно его сбрасывать и/или посылать ajax запрос для продления сессии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)