2011-08-16 34 views
8

Estoy creando la cookie utilizando el siguiente código, cómo leer el valor de txtusername en otra página y cómo eliminar la cookie cuando hago clic en cerrar sesión (código para cerrar sesión). Soy nuevo en la programación, por favor ayuda.Eliminar cookie al hacer clic en cerrar sesión

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

realidad, no debería reemplazar todo el código así como así. No es la misma pregunta que hace 11 minutos –

Respuesta

12

Nunca se debe almacenar la contraseña como una cookie. Esa es una amenaza de seguridad muy grande. Para eliminar una cookie, solo necesita modificarla y caducarla. Realmente no puede eliminarlo, es decir, eliminarlo del disco del usuario. Mira esto documentation.

Este es un ejemplo:

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

No se puede eliminar directamente una cookie, deberá configurar para que expire antes de la fecha actual:

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

Puede leer mas sobre esto here.

Además, realmente le recomiendo que no escriba su propia seguridad, pero que lea en asp.net membership. Más seguro y más fácil de usar. Como puedo ver muchos defectos en su modelo de seguridad. Almacenar la contraseña en texto plano en una cookie es realmente muy malo.

EDIT: Como ahora cambiado el código, que tiene que hacer esto para eliminar la 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, gracias, pero cómo leer el valor del nombre de usuario de txt. El código siguiente funcionaba cuando almacenaba la contraseña y el ID de correo electrónico sin encriptar si (Request.Cookies ["Cookiename"]! = Null) { Label8.Text = Request.Cookies ["cookiename"]. Valores ["client_ID"]. ToString(); } – rookie

+0

@Gokul Probar User.Identity.Name –

Cuestiones relacionadas