ASP.Net的Cookie实现

文章一
ASP.Net的Cookie实现



Cookie的用法也和ASP中差不多。

比如我们建立一个名为aspcn,值为飞刀的cookie

HttpCookie cookie = new HttpCookie["aspcn"];

cookie.Value = "飞刀";

Response.AppendCookie(cookie);

我们取出Cookie值也很简单

HttpCookie cookie = Request.Cookies["aspcn"];

cookieValue = cookie.Value;

有时候我们想在一个Cookie中储存多个信息,那也没有问题。比如我们在名为aspcn的cookie下加多个信息

HttpCookie cookie = new HttpCookie("aspcn");

cookie.Values.Add("webmaster","飞刀");

cookie.Values.Add("writer","beige");

cookie.Values.Add("LinkColor","blue");

Response.AppendCookie(cookie);

取出信息也一样简单

HttpCookie cookie = Request.Cookies["aspcn"];

value1 = cookies.Values["webmaster"];

value2 = cookies.Values["writer"];

文章二
写cookie

 HttpCookie UserCookie 
=   new  HttpCookie( " userName " ); 
 UserCookie[
" name " ] = dr[ " user " ].ToString();

UserCookie.Expires
= DateTime.Now.AddDays( 1 ); // 这里设置要保存多长时间.
 Response.Cookies.Add(UserCookie);
 

读取的时候
HttpCookie cookie
= Request.Cookies[ " userName " ];
string  name = cookie.Values[ " name " ];

清除cookie

 

HttpCookie cookie
= Request.Cookies[ " userName " ];
   
if (cookie != null )
   
{
    cookie.Expires
=DateTime.Now.AddDays(-2);    
    Response.Cookies.Set(cookie);
   }
文章三

大家也许和我一样,很少在ASP.NET中使用Cookie,传参数呀,存变量呀,用的比较多的是SessionViewState以及隐藏控件,有的干脆用“?”的请求方式。

1Cookie存放的目录

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

2Cookie的有效期

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

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

3Cookie的类型

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

a)即时型

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

b)持久型

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

4Cookie的内容

双击打开“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):

5ASP.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 " ] = " cityhunter172@126.com " ; // 设置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);
// 添加至客房端








sssssssss
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值