注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

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

2011-12-26 10:33:31|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

前段时间在做一个 SSO(Single Sign On),用cookies去存Token


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


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


下面分享一下对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的方式可以

 

 

方法一定对,己经过项目实际验证,观点不一定正确,如理解有误,请各位指正!!

  评论这张
 
阅读(330)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017