2015-05-21 5 views
0

Я использую объект Session в своем коде для хранения логина пользователя, который будет сохранен в БД.Поведение сеанса сеанса ASP.NET

Я хочу убедиться в поведении тайм-аута сеанса.

Если сеанс не работает, что может сделать пользователь? Думаю, просмотр страниц на разных страницах не приведет к восстановлению сеанса? поэтому только выбор заключается в том, чтобы закрыть все браузеры и вернуться и сеанс оживает?

Я хочу знать, при каких условиях Сессия не будет живой снова.

Кроме того, тайм-аут сеанса запускает Session_End в global.aspx?

ответ

2

Сессия считается активной до тех пор, пока запросы продолжают выполняться с тем же значением SessionID. Если время между запросами на определенный сеанс превышает указанное значение тайм-аута в минутах, сеанс считается истекшим. Reference

Я считаю, что вы проверяете, если пользователь вошел в систему или не на каждой странице (или в MasterPage), так что до тех пор, пока пользователь не простаивает, и он использует систему, сессия будет обновляется и не беспокоится. Если пользователь долгое время простаивал, и срок действия сессии истек, тогда логично заставить его снова войти в систему по соображениям безопасности.

+0

OK. Я смутился здесь. Я установил таймаут на 1 минуту для тестирования. затем в событии «Щелчок на кнопке» я проверяю сеанс, после 1 минуты сеанса имеет значение «Нуль». Однако, если пользователь выходит из системы и возвращается снова. Сессия снова заполняется. Вы можете объяснить? –

+0

очистка сеанса при выходе пользователя из системы –

+0

@S Nash Сеанс заполняется, когда пользователь входит в систему. Я считаю, что то, что вы описываете, является желаемым эффектом. Пользователь регистрируется, сеанс заполняется.Через одну минуту (заданный таймаут) сеанс становится нулевым. Пользователь регистрируется в сеансе. – rogerdeuce

0

использование этого на выходе из системы:

Session.Remove ("имя_сеанса");

0

Я считаю, что вы явно не убиваете сеанс, вызывая метод Abandon для объекта сеанса в событии Session_End.

Выход из сеанса делает это событие огнем. И, очевидно, пользователь должен быть доставлен на страницу входа в систему при попытке навигации между страницами.

0

Использование сеанса для хранения подтвержденных данных пользователя довольно распространено. Сеанс истекает после периода бездействия (я считаю, что по умолчанию 20 минут, но его можно изменить в web.config.) Обычно это желательно, потому что, если пользователь покидает сайт (или уходит со своего компьютера), не выходя из него (в конечном итоге) сеанс и эффективно вывести их из системы автоматически.

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

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

Да, сеанс тайм-аута запускает событие session_end.

Смежные вопросы