Каковы точные действия, необходимые для сохранения файла cookie после закрытия браузера? На данный момент у меня есть:
createPersistentCookie
устанавливается вtrue
наLoggedIn
событии.- MachineKey указан.
- Установлен скользящий срок действия форм
true
.
Пока браузер открыт, пользователь останется в системе, но как только он закроется, и неважно, как долго, пользователю потребуется снова войти в систему. Что мне не хватает?
РЕДАКТИРОВАТЬ: Я просмотрел статью, на которую указал marapet (см. комментарии ниже), и меня заинтересовало, действительно ли у билета есть флаг IsPersistent, что он и есть. Расшифрованный билет выглядит так: System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Value)
{System.Web.Security.FormsAuthenticationTicket}
CookiePath: "/"
Expiration: {19/08/2010 17:27:14}
Expired: false
IsPersistent: true
IssueDate: {19/07/2010 17:27:14}
Name: "alex"
UserData: ""
Version: 2
Все данные верны и соответствуют тем, которые я установил в событии LoggedIn. Более того, значение cookie, которое я могу получить напрямую из файла cookie, идентично этому. Но как только я закрываю браузер, cookie теряется.
Однако я заметил, что для файла cookie, содержащего билет, по какой-то причине сброшена дата. Во-первых, я не могу переопределить настройки в web.config, поэтому в конце события LoggedIn свойство Expires составляет 4000 минут после даты выпуска, а не месяц, который я устанавливаю программно. Затем после загрузки страницы файл cookie, который я получаю с помощью FormsAuthentication.FormsCookieName, имеет свойство Expires от 01/01/0001. Думаю, может быть, в этом проблема? Любые мысли будут оценены.
ИЗМЕНИТЬ №2: я изменяю и заголовок, и теги, чтобы включить сеанс, поскольку он оказался актуальным для проблемы / решения