Создать непостоянный файл cookie с помощью FormsAuthenticationTicket - PullRequest
7 голосов
/ 30 ноября 2009

У меня проблемы с созданием непостоянного cookie-файла с использованием FormsAuthenticationTicket. Я хочу сохранить пользовательские данные в заявке, поэтому я не могу использовать методы FormsAuthentication.SetAuthCookie () или FormsAuthentication.GetAuthCookie (). Из-за этого мне нужно создать FormsAuthenticationTicket и сохранить его в HttpCookie.

Мой код выглядит так:

DateTime expiration = DateTime.Now.AddDays(7);

// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,
    user.Email,
    DateTime.Now,
    expiration,
    isPersistent,
    userData,
    FormsAuthentication.FormsCookiePath);

// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.Path = FormsAuthentication.FormsCookiePath;
if (isPersistent)
    cookie.Expires = expiration;

// Add cookie to response
HttpContext.Current.Response.Cookies.Add(cookie);

Когда переменная isPersistent имеет значение true, все работает отлично, и cookie сохраняется. Но когда isPersistent имеет значение false, cookie все равно сохраняется. Я вхожу в окно браузера, закрываю его и снова открываю браузер, и я все еще вошел в систему. Как мне установить cookie, чтобы они не были постоянными?

Является ли непостоянный файл cookie тем же файлом cookie сеанса? Сохраняется ли информация о файлах cookie в данных сеанса на сервере или файлы cookie передаются в каждом запросе / ответе на сервер?

1 Ответ

3 голосов
/ 23 февраля 2011

Попробуйте удалить:

if (isPersistent) { cookie.Expires = expiration; }

... и заменить его на:

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

...