2009-11-30 4 views
7

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

Мой код выглядит следующим образом:

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 верно все работает отлично и куки сохраняются. Но когда isPersistent является ложным, cookie, похоже, сохраняется в любом случае. Я заходил в окно браузера, закрывал его и снова открывал браузер, и я все еще вошел в систему. Как настроить cookie на непостоянство?

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

ответ

3

Try удаление:

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

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

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

Смежные вопросы