下面分享一下對cookies的簡單操作
1.添加cookies(用cookies方式去做sso,使用者資訊儲存,修改都會依賴cookies)
代碼如下 |
複製代碼 |
#region##添加cookeis ///<summary> /// 添加cookeis ///</summary> public void AddCookies() { HttpCookie cookies = new HttpCookie("Porschev"); cookies["name"] = "Zhong Wei"; cookies["sex"] = "1"; cookies.Expires = DateTime.Now.AddMinutes(20); Response.Cookies.Add(cookies); } #endregion |
添加cookies一般不會有人出錯的。。。記得添加Expires就行
2.修改cookies( 在程式中難免會操作,對使用者資訊的修改,更新資料庫後,也會修改cookies,為了修改後的顯示)
方法一:
代碼如下 |
複製代碼 |
#region##修改cookies ///<summary> /// 修改cookies ///</summary> public void ModCookies() { HttpCookie cookies = Request.Cookies["Porschev"]; cookies["name"] = "wilson Z"; } #endregion |
建立個測式頁。。再取cookies中的name,結果:wilson Z;
這是這次項目中遇到的“杯具”事件之一,當這樣修改cookies時,在更新方法中再取這個名為Porschev的cookies,
name的值還為Zhong Wei而非wilson Z,頁面顯示也不對(己排除頁面緩衝原因,更新也確實沒有成功)
修改方法一:
代碼如下 |
複製代碼 |
#region##修改cookies ///<summary> /// 修改cookies ///</summary> public void ModCookies() { HttpCookie cookies = Request.Cookies["Porschev"]; cookies["name"] = "wilson Z"; //加上下面一句 Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1); } #endregion |
再次測式,結果正確,取出name的值為:wilson Z,頁面顯示也正確
自己理解:得讓以前存入到期時間為20min的cookies失效
3.得到cookies (這個最簡單,為求方法完整,還是寫上吧)
代碼如下 |
複製代碼 |
#region##得到cookies ///<summary> /// 得到cookies ///</summary> public void GetCookies() { HttpCookie cookies = Request.Cookies["Porschev"]; string name = cookies["name"]; //通過key取出對應value,多key同理取 } #endregion |
4.刪除cookies (刪除cookies網上有很多方法,但是刪除不是都能管用)
方法一:(最常用的一個刪除cookies方法)
代碼如下 |
複製代碼 |
#region##刪除cookies ///<summary> /// 刪除cookies ///</summary> public void DelCookeis() { if (Request.Cookies["Porschev"] != null) { HttpCookie cookies = new HttpCookie("Porschev"); cookies.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(cookies); } } #endregion |
在項目中測式,刪除部分cookies失敗,很無語,於是換一種方法
代碼如下 |
複製代碼 |
#region##刪除cookies ///<summary> /// 刪除cookies ///</summary> public void DelCookeis() { foreach (string cookiename in Request.Cookies.AllKeys) { HttpCookie cookies = Request.Cookies[cookiename]; if (cookies != null) { cookies.Expires = DateTime.Today.AddDays(-1); Response.Cookies.Add(cookies); Request.Cookies.Remove(cookiename); } } } #endregion |
測式:刪除成功
自己理解:方法一隻能刪除提當前Response中的cookies,不對完成刪除掉客端的cookies,用遍曆cookies的方式可以