2011-08-16 95 views
8

我使用以下代碼創建cookie,如何在另一個頁面中讀取txtusername值以及如何在單擊退出(註銷代碼)時刪除cookie。我是編程新手請幫忙。單擊退出時刪除Cookie

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

你真的不應該替換整個代碼就是這樣。這不是問題,因爲它是11分鐘前 –

回答

12

你不應該存儲密碼作爲餅乾。這是一個非常大的安全威脅。要刪除一個cookie,你只需要修改和過期。您無法真正刪除它,即將其從用戶磁盤中刪除。看看這documentation

這裏有一個例子:

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

不能直接刪除一個cookie,你必須將其設置爲當前日期之前到期:

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

你可以閱讀更多關於它here

此外,我真的鼓勵你不要寫自己的安全,但要閱讀asp.net membership。更安全,更易於使用。正如我在安全模型中看到的許多缺陷一樣。以純文本形式將密碼存儲在cookie中確實非常糟糕。

編輯: 正如你現在改變你的代碼,你必須這樣做刪除的cookie:

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

好的,謝謝,但如何讀取txtusername值。下面的代碼工作時,我沒有加密存儲密碼和電子郵件ID if(Request.Cookies [「Cookiename」]!= null ) { Label8.Text = Request.Cookies [「cookiename」]。Values [「client_ID」]。ToString(); } – rookie

+0

@Gokul Try User.Identity.Name –