分享一下cookies操作(增、删、改、查)小经验

来自:http://blog.csdn.net/porschev/article/details/6408543

最近在做一个 SSO(Single Sign On),用cookies去存Token


网站保存用户信息这类都用的cookies


以前觉得cookies操作无非就那么几种,但是“杯具事件”还是很多的


下面分享一下对cookies的简单操作

  http://www.dtan.so

-----------------------------------------------------操作-----------------------------------------------------------

 

1.添加cookies(用cookies方式去做sso,用户信息保存,修改都会依赖cookies)

 

 

[c-sharp] view plain copy print ?
  1. #region##添加cookeis  
  2. /// <summary>  
  3. /// 添加cookeis  
  4. /// </summary>  
  5. public void AddCookies()  
  6. {  
  7.     HttpCookie cookies = new HttpCookie("Porschev");  
  8.     cookies["name"] = "Zhong Wei";  
  9.     cookies["sex"] = "1";  
  10.     cookies.Expires = DateTime.Now.AddMinutes(20);  
  11.     Response.Cookies.Add(cookies);  
  12. }  
  13. #endregion  
 

 

添加cookies一般不会有人出错的。。。记得添加Expires就行

 

2.修改cookies( 在程序中难免会操作,对用户信息的修改,更新数据库后,也会修改cookies,为了修改后的显示)

 

方法一:

[c-sharp] view plain copy print ?
  1. #region##修改cookies  
  2. /// <summary>  
  3. /// 修改cookies  
  4. /// </summary>  
  5. public void ModCookies()  
  6. {  
  7.     HttpCookie cookies = Request.Cookies["Porschev"];  
  8.     cookies["name"] = "wilson Z";                
  9. }  
  10. #endregion  

新建个测式页。。再取cookies中的name,结果:wilson Z;

 

这是这次项目中遇到的“杯具”事件之一,当这样修改cookies时,在更新方法中再取这个名为Porschev的cookies,

 

name的值还为Zhong Wei而非wilson Z,页面显示也不对(己排除页面缓存原因,更新也确实没有成功)

 

修改方法一:

[c-sharp] view plain copy print ?
  1. #region##修改cookies  
  2.    /// <summary>  
  3.    /// 修改cookies  
  4.    /// </summary>  
  5.    public void ModCookies()  
  6.    {  
  7.        HttpCookie cookies = Request.Cookies["Porschev"];  
  8.        cookies["name"] = "wilson Z";  
  9.        //加上下面一句  
  10.        Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1);    
  11.    }  
  12.    #endregion  

 

再次测式,结果正确,取出name的值为:wilson Z,页面显示也正确

 

自己理解:得让以前存入过期时间为20min的cookies失效

 

 

3.得到cookies (这个最简单,为求方法完整,还是写上吧)

[c-sharp] view plain copy print ?
  1. #region##得到cookies  
  2.    /// <summary>  
  3.    /// 得到cookies  
  4.    /// </summary>  
  5.    public void GetCookies()  
  6.    {  
  7.        HttpCookie cookies = Request.Cookies["Porschev"];  
  8.        string name = cookies["name"];   //通过key取出对应value,多key同理取  
  9.    }  
  10.    #endregion  
 

 

4.删除cookies (删除cookies网上有很多方法,但是删除不是都能管用)

方法一:(最常用的一个删除cookies方法)

[c-sharp] view plain copy print ?
  1. #region##删除cookies  
  2.  /// <summary>  
  3.  /// 删除cookies  
  4.  /// </summary>  
  5.  public void DelCookeis()  
  6.  {  
  7.      if (Request.Cookies["Porschev"] != null)  
  8.      {  
  9.          HttpCookie cookies = new HttpCookie("Porschev");  
  10.          cookies.Expires = DateTime.Now.AddDays(-1);  
  11.          Response.Cookies.Add(cookies);  
  12.      }           
  13.  }  
  14.  #endregion  
 

 

在项目中测式,删除部分cookies失败,很无语,于是换一种方法

 

[c-sharp] view plain copy print ?
  1. #region##删除cookies  
  2.    /// <summary>  
  3.    /// 删除cookies  
  4.    /// </summary>  
  5.    public void DelCookeis()  
  6.    {  
  7.            foreach (string cookiename in  Request.Cookies.AllKeys)  
  8.    {  
  9.        HttpCookie cookies = Request.Cookies[cookiename];  
  10.        if (cookies != null)  
  11.        {  
  12.            cookies.Expires = DateTime.Today.AddDays(-1);  
  13.            Response.Cookies.Add(cookies);  
  14.            Request.Cookies.Remove(cookiename);  
  15.        }  
  16.    }      
  17.    }  
  18.    #endregion  
 

 

测式:删除成功

自己理解:方法一只能删除提当前Response中的cookies,不对完成删除掉客端的cookies,用遍历cookies的方式可以

 

 

方法一定对,己经过项目实际验证,观点不一定正确,请各位见谅!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值