Аутентификация/Сеансовые куки удаляя после браузера близко

Что требуются точные шаги, чтобы cookie сохранился после того, как браузер закрывается? В данный момент я имею:

  1. createPersistentCookie набор к true на LoggedIn событие.
  2. MachineKey указан.
  3. Формы, двигающие набор истечения к 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.01. Я думаю, возможно, что это - то, где проблема заключается? Любые мысли ценились бы.

EDIT#2: Я изменяю и заголовок и отмечаю, чтобы включать сессию, как оказалось, быть важным для проблемы/решения

10
задан Shagglez 21 July 2010 в 11:36
поделиться

2 ответа

В конце концов, я нашел решение. Как оказалось, проблема не в файле cookie аутентификации как таковом (он был сохранен правильно или, скорее, был бы, если бы обработчик не удалил его, ошибочно решив, что пользователь не вошел в систему на основании отсутствующий сеанс). Проблема заключалась в том, что файл cookie сеанса был утерян или неправильно идентифицирован. Таким образом, исправление заключалось в том, чтобы вручную добавить cookie сеанса во время входа в систему следующим образом:

HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId", Session.SessionID);
authCookie.Domain = ".mydomain.com";
authCookie.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(authCookie);

Теперь, когда браузеры снова открываются, сеанс идентифицируется правильно и сеанс пользователя восстанавливается.

10
ответ дан 4 December 2019 в 01:29
поделиться

Постоянный файл cookie аутентификации форм не должен удаляться при закрытии браузера. Он остается действительным в течение тайм-аута, определенного в web.config.

Однако некоторые браузеры могут быть настроены на удаление всех файлов cookie в конце сессии - вы можете проверить настройки вашего браузера (FireFox: Инструменты - параметры - конфиденциальность).

0
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: