• asp.net cookies


    我当前所吃的东东都固定为食物,所以一点也不惊讶,这一周的主题为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)的最佳选择。虽然这些敏感数据重要,但当用户的计算机崩溃时数据丢失,这也不是世界的末日。

  • 相关阅读:
    line-height:150%和line-height:1.5的区别
    javascript: with 表单验证
    CSS实现背景透明,文字不透明,兼容所有浏览器
    关于伪类元素:before和:after
    图片预览实例分享
    微信浏览器取消缓存的方法
    学习笔记(四):jQuery之动画效果
    学习笔记(三):jQuery之DOM
    Git 常用命令
    开发规范(三)数据库 By 阿里
  • 原文地址:https://www.cnblogs.com/wubiyu/p/1346596.html
Copyright © 2020-2023  润新知