2011-08-16 14 views
8

Tworzę plik cookie za pomocą poniższego kodu, Jak odczytać wartość txtusername na innej stronie i jak usunąć plik cookie po kliknięciu przycisku Wyloguj się (kod do wylogowania). Jestem nowy w programowaniu, proszę o pomoc.Usuń ciasteczko po kliknięciu Wyloguj się

string cookiestr; 
      HttpCookie ck; 
      tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
      DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data"); 
      cookiestr = FormsAuthentication.Encrypt(tkt); 

      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 
      if (chkPersistCookie.Checked) 
       ck.Expires = tkt.Expiration; 
      ck.Path = FormsAuthentication.FormsCookiePath; 
      Response.Cookies.Add(ck); 
+0

Naprawdę nie powinny zastąpić cały kod tak po prostu. To nie to samo pytanie co 11 minut temu –

Odpowiedz

12

Nigdy nie należy przechowywać hasło jako ciasteczka. To bardzo duże zagrożenie bezpieczeństwa. Aby usunąć plik cookie, musisz go zmodyfikować i wygasić. Naprawdę nie można go usunąć, tzn. Usunąć z dysku użytkownika. Sprawdź to documentation.

Oto przykład:

HttpCookie aCookie; 
    string cookieName; 
    int limit = Request.Cookies.Count; 
    for (int i=0; i<limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     aCookie = new HttpCookie(cookieName); 
     aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday 
     Response.Cookies.Add(aCookie); // overwrite it 
    } 
5

Nie można bezpośrednio usunąć plik cookie, trzeba ustawić go wygaśnie przed aktualną datą:

if (Request.Cookies["clienDetails"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("clienDetails"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 

Możesz przeczytać więcej na ten temat here.

Ponadto, naprawdę zachęcam do nie pisania własnego bezpieczeństwa, ale do przeczytania na asp.net membership. Bezpieczniejszy i łatwiejszy w użyciu. Jak widzę wiele wad w twoim modelu bezpieczeństwa. Przechowywanie hasła w postaci zwykłego tekstu w pliku cookie jest naprawdę złe.

EDIT: Jak teraz zmienił swój kod, trzeba to zrobić, aby usunąć plik cookie:

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) 
{ 
    HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

OK dzięki, ale jak odczytać wartość txtusername. Poniższy kod zadziałał, gdy zapisałem hasło i identyfikator e-mail bez szyfrowania, jeśli (Request.Cookies ["Cookiename"]! = Null) { Label8.Text = Request.Cookies ["cookiename"]. Wartości ["client_ID"]. ToString(); } – rookie

+0

@Gokul Wypróbuj User.Identity.Name –

Powiązane problemy