zoukankan      html  css  js  c++  java
  • C#cookie使用

    protected void cookieuse()
        {
            //写入cookie
            HttpCookie cookie = new HttpCookie("Info");//定义cookie对象以及名为Info的项
            DateTime dt = DateTime.Now;//定义时间对象
            TimeSpan ts=new TimeSpan(1,0,0,0);//cookie有效作用时间,具体查msdn
            cookie.Expires = dt.Add(ts);//添加作用时间
            cookie.Values.Add("user","cxbkkk");//增加属性
            cookie.Values.Add("userid","1203");
            Response.AppendCookie(cookie);//确定写入cookie中       
           
            //读取cookie
            if(Request.Cookies["Info"]!=null)
            {
                string temp=Convert.ToString(Request.Cookies["Info"].Values["user"])+"  "+Convert.ToString(Request.Cookies["Info"].Values["userid"]);      
                //读全部就用Request.Cookies["Info"].Value)
                if(temp=="")
                {
                    Response.Write("空");
                }
                else
                    Response.Write(temp);
            }
            else
            {
                Response.Write("error");
            }
           
            //修改cookie
            Response.Cookies["Info"]["user"] = "2";
            Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1);        //删除cookie下的属性
           
            HttpCookie acookie=Request.Cookies["Info"];
            acookie.Values.Remove("userid");
            acookie.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(acookie);        //删除所有cookie,就是设置过期时间为现在就行了
            int limit=Request.Cookies.Count - 1;
            for(int i=0;i<limit;i++)
            {
                acookie = Request.Cookies
    ;
                acookie.Expires = DateTime.Now.AddDays(-1);
                Response.Cookies.Add(acookie);
            }
        }

    1、Cookie存放的目录

    Cookie是存放在客户端的东东,放在“TemporaryInternetFiles”目录,所以说存在安全性的问题。大伙可通过以下方式找到具体位置:打开控制面板→Internet选项→常规→Internet临时文件→设置→即可看到“当前位置”,→点击“查看文件”将直接打开该文件夹,你也可以点击“移动文件夹”变更它所在的位置。

    2、Cookie的有效期

    从上图我们可以清楚的看到每个Cookie文档的“截止期”(即为有效期)。在有效期内,当登录计算机的用户Administrator再次访问172.meibu.com时,那么IE就会在请求页面的同时,连同上述的名称为“Cookie:administrator@172.meibu.com”的Cookie文档内容一起发送给服务器。

    若该文档包含多个Cookie的值时,截止期则以最后的失效期为准。

    3、Cookie的类型

    这里我们按有效期来分,分为两种:

    a)即时型

    指的是关闭浏览器(所有浏览172.meibu.com的IE)后,Cookie便失效,此类Cookie不会在“TemporaryInternetFiles”目录出现。其实它也有截止期的,为“0001-01-01”

    b)持久型

    就是已指定具体“截止期”的,能够在“TemporaryInternetFiles”目录里面找到的Cookie

    4、Cookie的内容

    双击打开“Cookie:administrator@172.meibu.com”,我们看到以下内容,如下图(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm06.jpg):

    上图中,“■”是换行符,你若是要打破什么锅来问我到底是怎么知道的话。我倒是会很乐意的告诉你:这就是经验!偶从学习C#那刻起,就拿第一个Windows程序——记事本来开刀,保存文档时得来的经验。

    所以服务器读出来的格式如下图(http://blog.csdn.net/images/blog_csdn_net/cityhunter172/85935/r_aspxForm07.jpg):

    5、在ASP.NET页面发放Cookie

    发送上述Cookie的.cs代码为:

    System.Web.HttpCookie ck=new HttpCookie("ckValue0");

    ck["Author"]="CityHunter";

    ck.Expires=System.DateTime.Now.AddMinutes(10);//若不指定,则为即时型Cookie

    //ck.Path="/FormTest/ManageSys";//设置Cookie的虚拟路径,注意一定要以“/”开头,否则为无效Cookie;请大家自行看一下它与在客房端的Cookie文档“名称”与“Internet地址”的关系

    Response.Cookies.Add(ck);

    ck=newHttpCookie("ckValue1");//重新新建一个名为ckValue1的Cookie

    ck.Expires=System.DateTime.Now.AddMinutes(20);//即刻起20分钟后失效

    ck["E_Mail"]="mailto:cityhunter172@126.com%22;//设置ckValue1中的E_Mail值

    ck["PersonalWeb"]="172.meibu.com";

    Response.Cookies.Add(ck);//添加此Cookie

    6、取回已发放Cookie的值

    Response.Write(Request.Cookies["ckValue0"]["Author"]+"<br>");//用不着说明了吧

    Response.Write(Request.Cookies["ckValue1"]["E_Mail"]+"<br>");

    Response.Write(Request.Cookies["ckValue1"]["PersonalWeb"]);

    好久没有出作业啦(何出此言?),这第三篇呀,可是花了偶两个星期的业余时间调试、总结、撰写哪,都说时光贵如金,不知我花的这些时间能换来多少银子?换银子,我看是没指望啦,能得到阁下的一句评论,偶也满足了。记住,你的评论就是偶继续写下去的动力。

    作业:给Cookie赋于以下值,怎样得到它的正确值

    ck["str1"]="2222";

    ck["str"]="str0=11111&str1=223";

    可以肯定的是Request.Cookies["ckValue1"]["str"]得不到“str0=11111&str1=223”这个字串,大家不妨试一下Request.Cookies["ckValue1"]["str1"]会得到意想不到的字串哟。

    提示:使用Server.UrlEncode()与Server.UrlDecode()

    十三、发放永久性的验证Cookie

    终于……终于……最后一个章节,蓦然回首,洋洋洒洒十二章。没想到年少时写不完作文的偶,居然也能编出几千余字的文章来呀,不得不佩服偶自己呀!再回首,一大片晕倒的人……。永远到底有多远?永久究竟是多久?只有天知道。

    大家登录CSDN的时候是否留意到一个“2周内不用再登录”的复选框,它又是怎么做到的呢?大家是否曾遇到过这样的困惑:在执行System.Web.Security.FormsAuthentication.SetAuthCookie时明明已指定createPersistentCookie为true为何关闭浏览器仍不能直接访问网站?下面我们就这个问题给大家解释一下,且介绍如何手工创建身份验证票并加入Cookie中。

    System.Web.Security.FormsAuthenticationTicket tk=newSystem.Web.Security.FormsAuthenticationTicket(

    1,//指定版本号:可随意指定

    "Admin",//登录用户名:对应Web.config中<allowusers="Admin"…/>的users属性

    System.DateTime.Now,//发布时间

    System.DateTime.Now.AddYears(100),//失效时间:100年以后,够永够久了吧

    false,//是否为持久Cookie:尚未发现有何用,至少目前偶还不知,下面会有说明

    "测试用户数据"//用户数据:可用((System.Web.Security.FormsIdentity)User.Identity).Ticket.UserData获取

    );

    stringstr=System.Web.Security.FormsAuthentication.Encrypt(tk);//加密身份验票

    //声明一个Cookie,名称为Web.config中<formsname=".APSX"…/>的name属性,对应的值为身份验票加密后的字串

    System.Web.HttpCookieck=newHttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName,str);

    //指定Cookie为Web.config中<formspath="/"…/>path属性,不指定则默认为“/”

    ck.Path=System.Web.Security.FormsAuthentication.FormsCookiePath;

    //此句非常重要,少了的话,就算此Cookie在身份验票中指定为持久性Cookie,也只是即时型的Cookie关闭浏览器后就失效;因此上面我说:我是真的还不知在身份验票中指定为持久性Cookie有何用。

    ck.Expires=System.DateTime.Now.AddYears(100);

    Response.Cookies.Add(ck);//添加至客房端

  • 相关阅读:
    sqlserver json 查询
    分页算法
    context.Response.AddHeader("Access-Control-Allow-Origin", context.Request.Headers["Origin"]); 这个方法是有问题的,AJAX跨域解决方案 在IE11中 context.Request.Headers["Origin"] 这段是获取不到值的。
    NativeWindow 妙用,截取windows消息
    屏蔽浏览器 F12
    linux常用基础命令40条
    shell之正则
    Go语言学习思路与开发软件VScode安装
    shell基础
    docker harbor安装失败
  • 原文地址:https://www.cnblogs.com/ymyglhb/p/1306507.html
Copyright © 2011-2022 走看看