Каковы точные шаги, необходимые для сохранения файла 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: Я изменяю заголовок и теги, чтобы включить сессию, поскольку это оказалось актуальным для проблемы / решения