Каковы точные шаги, необходимые для сохранения файла 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, несущий билет, имеет дату reset по какой-то причине. Во-первых, я не могу переопределить настройки в web.config, поэтому в конце события LoggedIn свойство Expires истекает через 4000 минут после даты выпуска, а не месяц, который я устанавливаю программно. Затем после загрузки страницы куки файлы, которые я получаю с помощью FormsAuthentication.FormsCookieName, имеют свойство Expires 01/01/0001. Я думаю, что, возможно, это проблема? Любые мысли будут оценены.
Edit # 2: Я изменяю оба заголовка и теги, чтобы включить сеанс, так как он оказался релевантным для проблемы/решения