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

前段时间在做一个 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的方式可以

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spring相关

springboot自定义错误页面

2282
来自专栏跟着阿笨一起玩NET

ASP.NET cache缓存的用法

本文导读:在.NET运用中经常用到缓存(Cache)对象。有HttpContext.Current.Cache以及HttpRuntime.Cache,HttpR...

932
来自专栏james大数据架构

log4net 中错误 System.Web.HttpException (0x80004005): 文件不存在

用日志组件,Global 中配置的输出最后一个错误信息,总是出现下面的错误信息: 2014-04-01 14:35:41,757 级别:ERROR 信息:[Ex...

2065
来自专栏派森公园

虚拟IP管理系统

8946
来自专栏Java成神之路

Mybatis异常_02_Result Maps collection already contains value for

   XXXMapper.xml文件中存在重名对象,保持名称不要一样即可正常启动。

1213
来自专栏跟着阿笨一起玩NET

关于WinForm/Web如何使用缓存Cach

相对到期也称滑动到期:设置相对过期时间 指定时间内无访问会失效。(类似Session机制)

1601
来自专栏王磊的博客

C#调用Couchbase中的Memcached缓存

安装服务端 服务端下载地址:http://www.couchbase.com/download 选择适合自己的进行下载安装就可以了,我这里选择的是Win7 64...

2759
来自专栏kwcode

使用Cache缓存

存放位置:服务器内存,用于频繁访问且不轻易更改的内容缓存。 string CacheKey = "CT1"; //检索指定项, object objModel ...

3086
来自专栏Laoqi's Linux运维专列

Redis的持久化-AOF

3228
来自专栏跟着阿笨一起玩NET

ASP.NET 防止同一用户同时登陆

       要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆...

1131

扫码关注云+社区

领取腾讯云代金券