Asp.Net Cookie的清除
背景
最近做到一个asp.net项目,项目中保存用户信息用到了cookie,因此,在注销身份的时候,就需要清除掉cookie。
探索过程
我先是试验了这种代码,在没有特殊声明前,代码都是写在Page_Load方法中,
this.Response.Cookies.Clear();
事实证明,这是木有效果的。。。
然后我想到了我以前看到的书里讲到的,可以通过设置过期时间为过去,以删除cookie,所以我修改了代码:
foreach (HttpCookie item in this.Response.Cookies)
{
item.Expires = DateTime.Now.AddDays(-1);
}
这样写有效果了,但是发现只是清除了一部分我希望清楚的cookie。。。尼玛!!
然后我就调试检查问题,发现在Response.Cookies的集合里边,并没有全部包括我要清除的cookie,反而是在Request.Cookies集合里边全部包含了,我中间还因此把以上代码中的
Response改写成Request,结果一个没有清楚掉。。。基础不牢的错
好吧,我的目的很简单:
1.找到我要清楚的cookie的key,这个从Request中我可以获取到
2.清楚浏览器cookie,这个我可以通过设置response的Cookie的过期时间为过去时间来达到
头脑里边整理下思路,果断这样写来进行测试了:
for (int i = 0; i < this.Request.Cookies.Count; i++)
{
this.Response.Cookies[this.Request.Cookies[i].Name].Expires = DateTime.Now.AddDays(-1);
}
结果OK,算是搞定了,想到我是不是应该稍微封装下,以方便以后使用,于是就封装到了一个工具类方法里边,具体请查看下边的代码;
代码
/// <summary>
/// 清除指定cookie
/// </summary>
/// <param name="contenxt">The contenxt.</param>
/// <param name="cookies">The cookies.</param>
public static void ClearCookies(HttpContext contenxt,params string[] cookies)
{
//清除cookies
foreach (string key in cookies)
{
contenxt.Response.Cookies[key].Expires = DateTime.Now.AddDays(-1);
}
}
/// <summary>
/// 清空所有cookie
/// </summary>
/// <param name="contenxt">The contenxt.</param>
public static void ClearCookiesAll(HttpContext contenxt)
{
//清除cookies
for (int i = 0; i < contenxt.Request.Cookies.Count; i++)
{
contenxt.Response.Cookies[contenxt.Request.Cookies[i].Name].Expires = DateTime.Now.AddDays(-1);
}
}
疑问
最后,其实我还是有疑问的,为什么在Request中可以获取到的cookie,在response中却获取不到了,不知道园子里边有没有大神给分析一下啊。
辞职,敬礼
Asp.Net Cookie的清除的更多相关文章
- ASP.NET Cookie(一)--基本应用
Cookie提供了一种在Web应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用Cookie存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序便可以检索以前存储的信息 ...
- ASP.NET Cookie 概述【转】
来源:http://msdn.microsoft.com/zh-cn/library/ms178194(VS.80).aspx ASP.NET Cookie 概述 Cookie 提供了一种在 Web ...
- 关于cookie的清除
关于cookie的清除 设置cookie时若指定了目录,那么在删除cookie时也必须指定相同的目录,如此才可以删除之前设置的cookie的值!!!!!!!!!
- 【转】asp.net Cookie值中文乱码问题解决方法
来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...
- How to secure the ASP.NET_SessionId cookie? 设置ASP.NET_SessionId Secure=true
How to secure the ASP.NET_SessionId cookie? To add the ; secure suffix to the Set-Cookie http header ...
- 微信WebView关闭后本地cookie无法清除问题
问题背景 在微信WebView下的页面中登录后,关闭WebView返回后再次进入页面,发现登录态还存在,原因是微信不会主动清除cookie以及其他的缓存. 期望是关闭窗口后会清除cookie,重新进入 ...
- ASP.NET Cookie是怎么生成的
ASP.NET Cookie是怎么生成的 可能有人知道Cookie的生成由machineKey有关,machineKey用于决定Cookie生成的算法和密钥,并如果使用多台服务器做负载均衡时,必须指定 ...
- ASP.NET Cookie和Session
Cookie和Session C#在服务器,JS在客户端 客户端验证不能代替服务端验证 Http HTTP属于应用层,HTTP 协议一共有五大特点:1.支持客户/服务器模式;2.简单快速;3.灵活;4 ...
- asp.net,cookie,写cookie,取cookie
Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一.Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一 ...
随机推荐
- Unity3D入门之JavaScript动态创建对象
接着上一篇Unity3D入门文章,这里继续使用JavaScript脚本语言. 调试:Unity集成了MonoDevelop编辑器,在代码某行的左侧点击,即可下一个断点.然后先关闭Unity编辑器,在M ...
- [Tool] 使用CodeMaid自動程式排版 - 摘自网络
前言 「使用StyleCop驗證命名規則」這篇文章,指引開發人員透過StyleCop這個工具,來自動檢驗專案中產出的程式碼是否合乎命名規則. [Tool] 使用StyleCop驗證命名規則 但是在專案 ...
- PCb过孔大小设置 / 丝印层字符尺寸设置
PCb过孔大小一般设置为:内孔(孔尺寸)0.30(12mil),外壳(直径)0.6(24mil) 常用过孔设置: 内径: 15mil(0.381mm) 30mil(0.762mm) 外径: 20mi ...
- [iOS基础控件 - 3.2] transform的使用
A.概念 可以控制UIView的位置.尺寸.旋转 transform是一种状态,每次都是相对于原始状态作出的形变 1.位置移动 // 向上移动 - (IBAction)top:(UIButto ...
- 第2组UI组件:TextView及其子类
1 TextView及其子类的继承关系 TextView直接继承自View,是EditView与Button两个类的父类,如下为TextView各子类继承关系. 2 个UI的样式图 CheckedTe ...
- 没有指针的java语言
一.java中引用(reference)实质就是指针 与C语言的指针比较: 1.引用是受控的安全的 2.空引用会被检查 java中不能够访问没有引用到的内存,这也是java的自动垃圾回收机制的基础之一 ...
- js-弹出一个新窗口 新窗口自动转接到一个页面然后自动关闭
这个问题.好. 在百度问问找到的:他的做法是打开一个后通过实例对象,再进行一将跳转,最后再将JS里定时将实例对象关闭... 这个问题其实不需要两个页面,只要三行JS代码就能实现,除非你在2.php里面 ...
- fastjson把对象转化成json避免$ref
转自http://blog.csdn.net/wxwzy738/article/details/30244993 DisableCircularReferenceDetect来禁止循环引用检测: JS ...
- ecshop在线手册前言及程序结构
该在线手册是有模版堂转载而来:仅供参考 一.前言 为什么我们ecshop模板堂要重制ecshop在线手册呢?因为目前网上的一些教程有些是比较老的,有些是不全面的,官方的手册也已经很久没有更 新,很多刚 ...
- HTML5要点(二)
<p> <b>今天周一</b>,<span>呵呵呵呵呵...</span> </p> <i>斜体文字</i&g ...