建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

cookies操作(增、删、改、查)小经验

时间:2011-11-08 17:12来源: 作者: 点击:
  前段时间在做一个 SSO(Single Sign On),用cookies去存Token   网站保存用户信息这类都用的cookies   以前觉得cookies操作无非就那么几种,但是“杯具事件”还是很多的   下面分享一下对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的方式可以

(责任编辑:admin)
织梦二维码生成器
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片