首页 > 语言 > 关键词  > ASP.NET最新资讯  > 正文

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

2008-09-10 10:33 · 稿源:互联网

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


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

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

username@Websitedomainthatcreatedthecookie

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

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

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

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(安全):发信号以表示是否使用SecureSocketsLayer(SSL)来发送cookie值。

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

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

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

DimtestCookieAsNewHttpCookie("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构造函数中的方法有两种:

HttpCookieobjectName=NewHttpCookie("cookieName")

HttpCookieobjectName=NewHttpCookie("cookieName","cookieValue")

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

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


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

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

HttpCookieCollectioncookies;

HttpCookieoneCookie;

cookies=Request.Cookies;

string[]cookieArray=cookies.AllKeys;

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

oneCookie=cookies[cookieArray[i]];

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

}

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

DimiAsInteger

DimoneCookieAsHttpCookie

Fori=0ToRequest.Cookies.Count-1

oneCookie=Request.Cookies(i)

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

NextI

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

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

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

IfRequest.Browser.Cookies=TrueThen

'使用cookies

Else

'没有cookie支持

EndIf

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

if(Request.Browser.Cookies==true)

{

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

{

HttpCookienewCookie=newHttpCookie("LastVisited1",DateTime.Now.ToString());

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

Response.Cookies.Add(newCookie);

this.txtName.Text="Isthisyourfirsttime?";

}else{

this.txtName.Text="Wehaven'tseenyousince"+

Request.Cookies["LastVisited1"].Value;

}}

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

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

举报

  • 相关推荐
  • AIbase MCP服务库上线:集成服务器、客户端、调试、案例教程等服务

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase(www.aibase.cn)。 AIbase平台(https://mcp.aibase.cn/)作为一个精选全球优质MCP服务器的集合平台,为AI应用开发者和爱好者提供了丰富的�

  • 微算法科技(NASDAQ:MLGO)利用Pool验证池机制,结合传统分布式一致性技术(如Paxos和Raft),实现秒级共识验证

    本文探讨了区块链和分布式系统中验证池机制的应用。传统共识机制在实时性要求高的场景存在局限,验证池机制通过集中验证节点提高效率,结合Paxos和Raft等分布式一致性技术,实现秒级共识验证。该技术具有高效性、可靠性和扩展性优势,可应用于金融交易、物联网数据交换和供应链管理等领域,确保数据一致性和系统稳定性。未来有望通过优化算法和结合AI技术进一步提升性能,拓展更多应用场景。

  • 行业最薄高端旗舰PC!荣耀MagicBook Art 14 2025正式发布:8499元起

    在今天的荣耀新品发布会上,荣耀MagicBook Art 14 2025终于正式发布。 具体价格如下: Ultra 5 255H/32GB/1TB售价8499元 Ultra 7 255H/32GB/1TB售价9499元 Ultra 7 255H/32GB/2TB售价9999元 荣耀MagicBook Art 14 2025延续了小镁本”的时尚美学设计,采用鲁班架构,产品最薄处仅为1cm、重约1kg,外观采用大量曲线设计,搭配蔓叶曲线设计,不仅美观,手感也更舒适,同时容纳众多接口。 在配色上,除了�

  • 在版权诉讼中,Anthropic 赢下了关键AI训练裁决

    就像任何渴望成为作家的读者一样,Anthropic的语言模型并非为了抄袭或取代原作,而是为了创造出完全不同的内容……

  • Perplexity推出AI浏览器Comet:想用得开1400元/月的订阅

    由英伟达支持的Perplexity AI推出了一款名为Comet的AI驱动网络浏览器。 Comet浏览器的核心卖点是其AI驱动的交互体验,公司表示它将整个浏览会话转变为单一、无缝的交互,将复杂的工作流程简化为流畅的对话。

  • 电子产业枢纽开启全球邀约:elexcon深圳国际电子展参展观众登记火热进行中

    2025年8月26-28日,ELEXCON深圳国际电子展暨嵌入式展将在深圳会展中心举办。作为华南地区覆盖电子全产业链的大型专业展会,本届展会聚焦AI智能与绿色双碳两大主线,规划五大核心展区,预计吸引400余家技术展商与3万专业观众。重点展示嵌入式AI处理器、边缘智能、HBM3高带宽存储等前沿技术,覆盖工业自动化、智能穿戴、车载电子等应用场景。同期将举办第七届中国嵌入式技

  • Ceph存储效能飙升20%+!忆联PCIe5.0 ESSD智能多流技术攻克“隐形损耗”

    本文介绍了忆联Ceph分布式存储方案的技术优势。该方案基于PCIe5.0 ESSD,数据吞吐效率达上一代2倍;采用智能多流技术,性能优于主流竞品3.15%;有效抑制写放大效应(WAF),优于竞品20%-32%,可延长SSD寿命20%以上。方案通过硬件层面的创新突破,为云原生环境提供兼具超低延迟与超高一致性的存储基础设施,满足企业级客户对存储系统全生命周期稳定性的严苛需求。测试数据显示,在3副本配置下,QD32时随机读IOPS达175.5万,延迟稳定在1.1毫秒内;混合读写IOPS超50万,延迟约20毫秒。智能多流技术实现1.78超低WAF值,显著提升存储效能,是构建新一代分布式存储系统的理想选择。

  • iPad为何不运行macOS 苹果高管:macOS未对触摸屏做优化

    iPadOS 26带来了全新的应用视窗、下滑式菜单栏等功能,让iPad的操作体验更接近Mac,但苹果始终未让iPad运行macOS系统,其背后原因正式揭开。 苹果公司软件工程负责人Craig Federighi接受采访时称,iPadOS 26的新特性在生产力与简洁性之间取得了很好的平衡,macOS系统从未对触控屏做优化,我们要保留iPad最本质的简洁性,如果强行移植macOS,iPad将丧失其触控设备的独特价值。 Craig Fed

  • 探索AI时代出海新范式!impact.com荣获TopDigital创新营销奖「年度营销技术公司」

    2025年7月1日,impact.com在第十三届TopDigital创新营销盛典上荣获"年度营销技术公司"大奖。该平台凭借技术能力、商业影响和全球化战略的综合表现获得认可,其AI技术正深刻改变品牌营销工作方式,尤其在效率提升与流程优化方面成效显著。impact.com通过智能推荐、智能审批等功能,将AI能力引入合作伙伴管理核心环节,帮助出海企业构建全球化合作网络。大中华区总裁Jennifer Zhang表示,AI不是替代营销人,而是释放其判断力与创造力。作为全球合作伙伴经济核心引擎,impact.com已服务众多中国出海品牌,未来将继续深化AI在营销管理平台的应用。

  • 睿是信息携手Arctera,深化服务中国市场,共筑数据管理新未来

    2025年6月23日,上海睿是信息科技与全球数据管理领导者Arctera达成战略合作。自7月7日起,睿是信息正式成为Arctera中国区独家总代理,全面负责其在中国市场的运营、销售和技术支持服务。Arctera源自Veritas Technologies,在数据合规、弹性和保护领域具有领先优势。睿是信息作为中国领先的IT服务商,将结合Arctera先进的数据管理解决方案,为中国客户提供更高效可靠的服务,助力企业数字化转型。此次合作将深化双方在中国市场的布局,共同推动数据管理技术创新发展。