• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.NetCookie的清除

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

背景

最近做到一个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中却获取不到了,不知道园子里边有没有大神给分析一下啊。
辞职,敬礼


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何:定义ASP.NET主题发布时间:2022-07-10
下一篇:
asp.net中KingEditor编辑器的使用总结发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap