Состояние сессии asp.net продолжительность жизни - PullRequest
2 голосов
/ 27 апреля 2011

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

Что произойдет, если пользователь выйдет из системы и сразу же войдет в систему?Или закрывает браузер и перезапускает его?Состояние сеанса "умирает"?Если нет - какая альтернатива заставить его умереть при выходе из системы или закрытии браузера?

Спасибо

Ответы [ 6 ]

2 голосов
/ 27 апреля 2011

Состояние сеанса полностью зависит от наличия cookie, предоставляемого браузером для каждого запроса в «сеансе». Когда сервер получает cookie-файл по каждому запросу, он проверяет, прошло ли 20 минут по умолчанию с момента последнего запроса.

Поэтому ответы на ваши вопросы:

Что произойдет, если пользователь выйдет из системы и немедленно войти в систему?

Файл cookie помечается как недействительный сервером при выходе из системы, и ему присваивается новый файл при повторном входе в систему

Или закрывает браузер и перезапускает его?

Если сеанс еще не истек, это не будет иметь никакого значения (поскольку браузер будет отправлять cookie вместе с каждым запросом)

заставить его умереть при выходе из системы или браузере закрытие

Вы не можете заставить cookie «умереть», хотя вы можете установить дату его истечения в прошлом. Вы не сможете обнаружить, как пользователь закрывает свой браузер.

2 голосов
/ 27 апреля 2011

То, остается ли сеанс активным, зависит от двух вещей:

  • Является ли сеанс все еще живым на сервере (ваш 20-минутный тайм-аут или вы программно отменили сеанс)
  • Когда клиент (браузер) переносит файл cookie сеанса на сервер, чтобы можно было идентифицировать сеанс.

Сеансовые cookie-файлы обслуживаются как непостоянные cookie-файлы. Это означает, что они должны поддерживаться браузером в течение одного сеанса (браузера), поэтому их не следует отправлять после закрытия браузера и его перезапуска. Но на самом деле все зависит от реализации клиентского браузера.

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

1 голос
/ 27 апреля 2011

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

1 голос
/ 27 апреля 2011

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

1 голос
/ 27 апреля 2011

Сессия «умирает» после 20 минут бездействия (по умолчанию) или если она была очищена программистом.

Чтобы очистить сессию, вы вызываете Abandonметод на это.Сделайте это при выходе из системы.

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

0 голосов
/ 27 апреля 2011

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

Призвание:

Session.Abandon();

Уничтожит сессию. http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx

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