2011-08-16 4 views
8

Je crée le cookie en utilisant le code ci-dessous, Comment lire la valeur de txtusername dans une autre page et comment supprimer le cookie lorsque je clique sur la déconnexion (code de déconnexion). Je suis nouveau à la programmation s'il vous plaît aider.Supprimer le cookie en cliquant sur Déconnexion

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

Vous devriez vraiment pas remplacer votre code entier comme ça. Ce n'est pas la même question qu'il y a 11 minutes –

Répondre

12

Vous ne devriez jamais stocker mot de passe comme cookies. C'est une très grande menace pour la sécurité. Pour supprimer un cookie, vous avez juste besoin de le modifier et de l'expirer. Vous ne pouvez pas vraiment le supprimer, c'est-à-dire le supprimer du disque de l'utilisateur. Découvrez ce documentation.

Voici un exemple:

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

Vous ne pouvez pas supprimer directement un cookie, vous devez le prendre fin avant la date actuelle:

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

Vous pouvez en lire davantage here.

En outre, je vous encourage vraiment à ne pas écrire votre propre sécurité, mais de lire sur asp.net membership. Plus sécurisé et plus facile à utiliser. Comme je peux voir de nombreuses failles dans votre modèle de sécurité. Stocker le mot de passe en texte brut dans un cookie est vraiment très mauvais.

EDIT: Comme vous changé votre code, vous devez le faire pour supprimer le 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 merci, mais comment lire la valeur de txtusername. Le code ci-dessous a fonctionné quand j'ai stocké le mot de passe et l'email sans crypter if (Request.Cookies ["Cookiename"]! = Null { Label8.Text = Request.Cookies ["cookiename"]. Valeurs ["ID_Client"]. ToString(); } – rookie

+0

@Gokul Essayez User.Identity.Name –

Questions connexes