2011-08-16 7 views
8

Sto creando il cookie utilizzando il seguente codice, Come leggere il valore txtusername in un'altra pagina e come eliminare il cookie quando faccio clic su Esci (codice per la disconnessione). Sono nuovo alla programmazione, per favore aiuto.Elimina cookie su disconnessione

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

È davvero non dovrebbe sostituire l'intero codice proprio così. Non è la stessa domanda come lo era 11 minuti fa –

risposta

12

Non si dovrebbe mai memorizzare la password come biscotto. Questa è una grande minaccia per la sicurezza. Per eliminare un cookie, devi solo modificarlo e scadere. Non puoi davvero cancellarlo, ad esempio rimuoverlo dal disco dell'utente. Dai un'occhiata a questo documentation.

Ecco un esempio:

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

Non è possibile cancellare direttamente un cookie, è necessario impostarlo per scadere prima della data corrente:

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

Si può leggere di più su di esso here.

Inoltre, ti incoraggio davvero a non scrivere la tua sicurezza, ma a leggere su asp.net membership. Più sicuro e più facile da usare. Come posso vedere molti difetti nel tuo modello di sicurezza. Memorizzare la password in un testo semplice in un cookie è davvero pessima.

EDIT: come ora cambiato il codice, è necessario fare questo per rimuovere il 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 grazie, ma come leggere il valore txtusername. Il codice qui sotto funzionava quando ho memorizzato la password e l'id e-mail senza crittografare if (Request.Cookies ["Cookiename"]! = Null { Label8.Text = Request.Cookies ["cookiename"]. Valori ["ID_cliente"]. ToString(); } – rookie

+0

@Gokul Prova User.Identity.Name –