您的位置:首页精文荟萃软件资讯 → ASP.NET中利用cookies保持客户端信息

ASP.NET中利用cookies保持客户端信息

时间:2004/10/8 13:17:00来源:本站整理作者:蓝点我要评论(9)

我当前所吃的东东都固定为食物,所以一点也不惊讶,这一周的主题为cookies。


 
Cookies用于存储特定用户信息,它提供了Web程序中一种有用的方式。多年以来,JavaScript开发人员已经进行了有关cookie的大量工作。同样,ASP.NET通过System.Web空间名称也提供了cookie的访问。虽然你不应该使用cookie来存储一些敏感性的数据,但是,它们是处理锁细数据的一个极好的选择,比如颜色参数选择或者最后一次访问日期。


传递cookies
cookie是存储在客户端计算机的一个小文件。如果你是一个Windows用户,可以在用户路径中查看Cookies路径,即为Documents And Settings路径。这一路径包含这一文件名称的文本文件:


username @ Web site domain that created the cookie


(用户名称@建立cookie的站点域名)


.NET System.Web空间名称包含三个类,你可以使用它们来处理客户端的Cookies:


HttpCookie:提供一个建立和操作独立HTTP cookies的安全类型的方式。


HttpResponse:Cookies属性允许客户端cookies被操作。


HttpRequest:Cookies属性允许访问客户端操作的cookies。


HttpResponse和HttpRequest对象的Cookies属性将返回一个HttpCookieCollection对象,它包含着,将单独的cookies添加到集合(collection)中,以及从集合(collection)获得一个单独的cookies。


HttpCookie类
HttpCookie类针对于客户存储之用而建立的单独cookies。一旦HttpCookie对象被建立,你可以将其添加到HttpResponse对象的Cookies属性中。同样的,你可以通过HttpRequest对象访问现有的cookies。HttpCookie类包含以下的公有属性:


Domain(域名):获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问。


Expires(期限):获得或设置cookie的终止日期和时间,你可以将其设置为一个过去的日期以自动终止或者删除cookie。


Names(名称):获得或设置cookie名称。


Path(路径):获得或设置cookie的虚拟路径。这一属性允许你限制cookie范围,也就是说,访问cookie只能限制于一个特定的文件夹或者路径。设置这一属性限制为只能访问特定路径和该路径下的所有文件。


Secure(安全):发信号以表示是否使用Secure Sockets Layer (SSL)来发送cookie值。


Value(值):获得或设置一个单独的cookie值。


Values(信息):返回包含在cookie中的key/value的一个集合。


虽然这些还不是一个最详尽的列表,但它提供了处理cookies所需要的东西。对于这些属性的使用,以下VB.NET范例给予最好的理解:


Dim testCookie As New HttpCookie("LastVisited")


testCookie.Value = DateTime.Now.ToString


testCookie.Expires = DateTime.Now.AddDays(7)


testCookie.Domain = "builder.com"


Response.Cookies.Add(testCookie)


这一代码段建立了一个名为LastVisited的新的cookie,并赋予当前日期和时间的值。同样的,cookie终止期限设置为一个星期,相关的范围为populated。一旦建立对象,通过Response.Cookies对象的Add方法就可以将对象添加到客户端的cookies集合。HttpCookie构造函数中的方法有两种:


HttpCookie objectName = New HttpCookie("cookieName")


HttpCookie objectName = New HttpCookie("cookieName", "cookieValue")


同样,Response对象包含一个SetCookie方法,这一方法可以接受一个HttpCookie对象。


我的cookie在哪里?
一旦cookies被保存在客户端,有多种不同的方法以提供你访问它们。如果你知道cookie名称,可以使用HttpResponse对象很容易地访问它的值。以下VB.NET行显示了与cookie有关的值:


 
 


Response.Write(Request.Cookies("LastVisitied").Value)


 


除此之外,可以通过一个HttpCookieCollection对象访问cookies的完整列表。这就使得cookie列表可以用一个for循环来访问。以下C#代码说明了这样的例子:


HttpCookieCollection cookies;


HttpCookie oneCookie;


cookies = Request.Cookies;


string[] cookieArray = cookies.AllKeys;


for (int i=0; I < cookieArray.Length; i++) {


oneCookie = cookies[cookieArray[i]];


Response.Write(oneCookie.Name + " - " + oneCookie.Value);


}


 


VB.NET中相应的代码如下:


 


Dim i As Integer


Dim oneCookie As HttpCookie


For i = 0 To Request.Cookies.Count - 1


oneCookie = Request.Cookies(i)


Response.Write(oneCookie.Name + " - " + oneCookie.Value)


Next I


稳定也是一个观点
cookie文件存放在客户端机器,所以你的用户可以任意删除或更改。此外,用户还可以使cookies无效化。基于此原因,请记住不要依赖cookie数据。你应该将重要的信息保存在服务器──特别是一个数据库中。


在一个cookie中存储关键信息被认为是一种低级的程序设计,因为这些信息很容易被泄露,原因是这些信息位于客户机器的一个文件中。在这一点,一种方法就是使用SSL,这是一种可以避免敏感信息的更好方法。


 


我可以使用cookies吗?
用户可以在自己的浏览器上无效化cookie支持。你可以在自己的代码中访问这些设置以决定是否支持cookies。Request对象满足了这一想法,以下VB.NET代码显示了这一过程:


 


If Request.Browser.Cookies = True Then


' 使用cookies


Else


'没有cookie支持


End If


 


可以联合代码来使用cookie值。以下C#代码段对cookie支持进行了测试,并相应地将结果显示在一个文本框:


if (Request.Browser.Cookies == true)


{


if (Request.Cookies["LastVisited1"] == null)


{


HttpCookie newCookie = new HttpCookie("LastVisited1",DateTime.Now.ToString());


newCookie.Expires = DateTime.Now.AddYears(1);


Response.Cookies.Add(newCookie);


this.txtName.Text = "Is this your first time?";


} else {


this.txtName.Text = "We haven't seen you since " +


 Request.Cookies["LastVisited1"].Value;


}  }


 


你可以将这一代码段添加到ASP.NET页中的Page_Load事件。


保存数据的另一方式
ASP.NET提供了保存特定用户数据的多种方法。其中一个老方法就是cookies。对于敏感数据,虽然cookies不是最好的方法,但它是诸如颜色参数选择、最后一次访问日期等亲和力选项(benign items)的最佳选择。虽然这些敏感数据重要,但当用户的计算机崩溃时数据丢失,这也不是世界的末日。


 


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本