2012-05-24 3 views
7

Chcę wygasić pliki cookie, które dla FormsAuthentication po zamknięciu przeglądarki. (chcę to działa jak sesja PHP robi)Asp.Net MVC3 - FormsAuthentication, Jak wygasić cookie po zamknięciu przeglądarki?

Oto mój kod autoryzacji, który znajduje się w model (nie Controller).

modele/Auth.cs

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, 
    model.UserId, 
    DateTime.Now, 
    DateTime.Now.AddDays(1), 
    true, 
    model.UserId +" "+reader["lastname"], 
    FormsAuthentication.FormsCookiePath); 

string hash = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 

if (ticket.IsPersistent) 
{ 
    cookie.Expires = ticket.Expiration; 
} 

HttpContext.Current.Response.Cookies.Add(cookie); 

Web.config

<authentication mode="Forms"> 
    <forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms> 
</authentication> 
<authorization> 
    <deny users="?" /> 
</authorization> 

i jeden więcej pytań, tam są 2 razy Ustawianie limitu czasu plików cookie,

w bilecie,

DateTime.Now.AddDays(1), 

i uwierzytelniania w pliku web.config plik

<forms name="user" timeout="60" loginUrl="~/Auth/login" path="/"></forms> 

jak różne są, a które będą miały wpływ na rzeczywistą wygaśnie ciasteczka?

Ktoś wie, proszę mi doradzić.

Dziękujemy!

Odpowiedz

9

Nie można wygaśnięcia pliku cookie, gdy przeglądarka jest zamknięta. Możesz jednak uczynić plik cookie nietrwałym, co oznacza, że ​​nie będzie on zapisywał pliku cookie, a zatem po otwarciu nowej przeglądarki będzie on miał nowy plik cookie (należy jednak pamiętać, że z uwagi na sposób, w jaki większość przeglądarek buforuje nietrwałość, ciasteczka z zakładkami, aby to wyczyścić, należy zamknąć całą przeglądarkę).

Jeśli chodzi o drugie pytanie, wpis web.config jest używany, jeśli nie określono limitu czasu.

+0

Działa! Dziękuję Ci! –

+0

nie działa z chrome. var autTicket = new FormsAuthenticationTicket (1, user.EmailAddress, DateTime.Now, DateTime.Now.AddMinutes (FormsAuthentication.Timeout.TotalMinutes), false, userData, "/"); – JenonD

+0

@JenonD - "nie działa" jest niejasne. Wiele rzeczy zostało omówionych, co "nie działa"? –

0

Zdarzenie jQuery unload może być używane do wykrywania zamknięcia przeglądarki.

Ale to zdarzenie jest również wywoływane, gdy: Użytkownik kliknął link, aby opuścić stronę, lub wpisał nowy adres URL w pasku adresu. Przyciski przewijania do przodu i do tyłu wywołają zdarzenie. Nawet przeładowanie strony spowoduje najpierw utworzenie zdarzenia zwalniającego.

Bind an event handler to the "unload" JavaScript event.

odpowiedzieć na drugie pytanie, limit czasu, który można ustawić w kodzie z ręcznym, wpis web.config.