2009-11-30 19 views
7

Mam problemy z utworzeniem nietrwałego pliku cookie za pomocą formularza FormsAuthenticationTicket. Chcę zapisać userdata w bilecie, więc nie mogę używać metod FormsAuthentication.SetAuthCookie() ani FormsAuthentication.GetAuthCookie(). Z tego powodu muszę utworzyć formularz FormsAuthenticationTicket i przechowywać go w HttpCookie.Tworzenie nietrwałego pliku cookie za pomocą formularza FormsAuthenticationTicket

Mój kod wygląda następująco:

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); 

Gdy zmienna isPersistent prawda wszystko działa poprawnie i plik cookie jest zachowywane. Ale kiedy jest trwały, ciasteczko wydaje się być utrzymane. Zalogowałem się w oknie przeglądarki, zamknąłem i ponownie otworzyłem przeglądarkę, a ja nadal jestem zalogowany. Jak ustawić plik cookie jako nietrwały?

Czy nietrwały plik cookie jest taki sam jak plik cookie sesji? Czy informacje o plikach cookie są przechowywane w danych sesji na serwerze lub czy pliki cookie są przesyłane w każdym żądaniu/odpowiedzi na serwer?

Odpowiedz

3

Spróbuj usunąć:

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

... i zastąpienie go:

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

Powiązane problemy