大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > ASP.NET技巧 > 深入理解Cookie对象

深入理解Cookie对象

关键词:Cookie对象  阅读(996) 赞(46)

[摘要]Cookie对象用于保存客户端浏览器请求的服务器页面,也可用它存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置。并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户端计算机中。

Cookie对象概述

Cookie对象用于保存客户端浏览器请求的服务器页面,也可用它存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置。并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户端计算机中。

Cookie对象常用属性、方法

Cookie对象的常用属性及说明如表1所示。

使用Cookie对象保存和读取客户端信息

要存储一个Cookie变量,可以通过Response对象的Cookies集合,其使用语法如下。

Response. Cookies[varName].Value=值;

其中,varName为变量名。

要取回Cookie,使用Request对象的Cookies集合,并将指定的Cookie集合返回,其使用语法如下。

变量名=Request. Cookies[varName].Value;

下面示例分别通过Response对象和Request对象的Cookies属性将客户端的IP地址写入Cookie中并读取出来。执行程序,示例运行结果如图所示。

程序实现的主要步骤:

新建一个网站,默认主页Default.aspx,在Default.aspx页面上添加两个Button控件和一个Label控件,它们的属性设置如表所示。

单击【将用户IP写入Cookie】按钮,将触发按钮的Click事件。在该事件中首先利用Request对象的UserHostAddress属性获取客户端IP地址,然后将IP保存到Cookie中。代码如下:

protected void btnWrite_Click(object sender, EventArgs e)
{
	string UserIP = Request.UserHostAddress.ToString();
	Response.Cookies["IP"].Value = UserIP;
}

单击【将用户IP从Cookie中读出】按钮,从Cookie中读出写入的IP,代码如下:

protected void btnRead_Click(object sender, EventArgs e)
{
	this.Label1.Text = Request.Cookies["IP"].Value;
}

由于Cookie对象可以保存和读取客户端的信息,用户可以通过它对登录的客户进行标识,防止用户恶意攻击网站。如:在线投票中,可以使用Cookie,防止用户进行重复投票。

应用锦囊

1.对Cookie中的数据加密

为了避免用户信息被他人窃取,增强网站的安全性,通常需要对Cookie中的数据进行加密。加密代码如下:

string data="对Cookie中的数据加密。";
Response.Cookies["data"].Value=Forms.Authentication.HashPasswordForStoringInConfigFile(data,"md5");

2.创建及存取多个键值的Cookie对象

使用Response对象可以创建多个数据值的Cookie,其语法格式如下:

Response.Cookies["CookieName"]["KeyName"]="Cookie中相对索引键的数据值";

例如,使用Response对象的Cookie集合保存用户登录名和密码,其代码如下:

Response.Cookies["UserInfo"]["UserName"] = this.txtName.Text.Trim();
Response.Cookies["UserInfo"]["UserPwd"] = this.txtPassword.Text.Trim();

3.设定Cookie变量的生命周期

虽然Cookie对象变量是存放在客户端计算机上,但是也不是永远不会消失。设计人员可以在程序中设定Cookie对象的有效日期,使用语法为:

Response.Cookies["CookieName"].Expires = 日期;

如果没有指定Expires属性,Cookie变量将不会被保存,当关闭浏览器时,Cookie变量也会随之消失。

 • 下面的程序片段演示了几种设定有效期的方法:

//20分钟后到期

TimeSpan ts = new TimeSpan(0, 0, 20, 0);

Response.Cookies["myCookie"].Expires = DateTime.Now.Add(ts);

//一个月后到期

Response.Cookies["myCookie"].Expires = DateTime.Now.AddMonths(1);

//指定有效日期

Response.Cookies["myCookie"].Expires = DateTime.Parse("10/26/2007");

//永远不过期

Response.Cookies["myCookie"].Expires = DateTime.MaxValue;

//关闭浏览器后过期

Response.Cookies["myCookie"].Expires = DateTime.MinValue;



相关评论