asp.net下cookie 的基础使用

cookie作为在B/S开发中经常被使用到的东西,asp.net必然提供了现成的东西给我们使用。

就是这个对象:HttpCookie,当然了,对于asp.net来说,Request和Response中也有cookie对象。

首先闹清楚什么是cookie:

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义。

那么在asp.net下如何使用cookie呢?

第一是创建:asp.net下有两种方法:

第一是直接在response对象中操作cookies对象:

Response.Cookies["userName"].Value = "patrick"; Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

既然是键值对的存在,我们就可以直接创建一个key所对应的value,关于cookie过期时间的问题我们稍后研究。

第二是创建一个cookie对象,并将其添加到response对象中:

HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);

这种方式个人比较推荐,虽然看起来代码多一点,但是易读性比较高。

cookie最终都需要发送到客户端才能开始使用。在response对象中添加完cookie对象,必须要等到userAgent(一般是浏览器)解析完成请求后,cookie才会被写入客户端,以IE为例,cookie是被写入到Internet临时文件夹内了,那么以后的请求cookie就会被发送至服务端。

然后我们才可以真正的把cookie利用起来,操作cookie有很多手法,这里只记录在服务端的方式,对于asp.net来说,request对象中的cookies记录了所有发送过来的cookie,从而形成了一个集合。

使用起来很常规的键值对取值方式:

if(Request.Cookies["userName"] != null)
{
    HttpCookie aCookie = Request.Cookies["userName"];
    string cTemp=Server.HtmlEncode(aCookie.Value);
    //string cTemp=Request.Cookies["userName"].Values["name"];
}

这种类似方式相信大家在c#中已经使用了无数次,唯一不太一样的就是注释中的那种取值方式。因为在这个例子中我们一个cookie对象中只存了一个键值对,实际上一个cookie对象中可以存在n个键值对,所以,如果有多个键值对,是不能简单的用Value来取值的,当然上面的方法也可以在多个值当中获取指定的值。核心在于使用cookie对象中的Values而非Value。

ok,取到值了,那么去做我们想做的事吧,勇敢点,什么都可以的……

然后我们来简单的讨论下cookie的过期时间:

默认情况下,即不设置cookie的过期时间,cookies失效时间是直到关闭浏览器,也就相当于会话关闭时清除cookie。我们也可以自己设置cookie的过期时间:

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

aCookie.Expires = DateTime.Now.AddDays(1);

DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(1, 0, 0, 0);
cookie.Expires = dt.Add(ts);

以上就是设置过期时间的方式,其实差距不大,就是设置Expires属性,cookie 的是有效时间是从创建时开始算起的。根据情况可以灵活设置。时间操作方法很多,这里友情提示下,不建议使用:Response.Cookies("字段名").expires=时间函数+N这种方式来设置过期时间,某位大神的资料中提到过,这种方式会出现无法显示网页或者500错误,比较推荐用DateTime对象的add函数来设置过期时间。

最后还有一个问题就是删除cookie:ASP.NET中不能直接删除用户计算机中的 Cookie。但是,可以通过将 Cookie 的到期日期设置为过去的日期,让用户的浏览器来删除Cookie。当用户下一次向设置该 Cookie 的域或路径内的页发出请求时,浏览器将确定该 Cookie 已到期并将其移除。

调用 Cookies集合的 Remove方法可从服务器端的集合中删除Cookie,使 Cookie 不会被发送至客户端。但是,如果客户端已存在 Cookie,就需要设置过期时间,在请求发送至客户端后cookie会在客户端被删除掉。

myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);  

以上代码是设置cookie过期的方式。

提醒:cookie操作建议大家想好再动手,本身cookie属于有一定风险的操作,因为数据会被长时间保存在客户端,一般情况下使用过程中关键数据如用户名密码都会选择加密存储。

时间: 2024-08-23 07:02:16

asp.net下cookie 的基础使用的相关文章

ASP.NET中Cookie跨域的问题及解决代码

ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.com/zhangziqiu/archive/2009/08/06/cookies-javascript-aspnet.html 最近在项目开发中遇到一个很棘手的问题,一个用户在顶级域名登录后,跳转到自己所拥有的二级域名下管理二级网站时,cookie丢失了,一直找解决办法找了整整两天,百度谷歌一大堆,

ASP.NET下MVC设计模式的实现

[转载]MVC架构在Asp.net中的应用和实现 转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本文主要论述了MVC架构的原理.优缺点以及MVC所能为Web应用带来的好处.并以“成都市信息化资产管理系统”框架设计为例,详细介绍其在Asp.net环境下的具体实现.旨在帮助Web设计开发者更好的了解和掌握MVC,合理利用MVC构建优秀的Web应用. 关键字:MVC.视图.控制器.模型.Asp.net

asp.net中Cookie的用法【转】

比如建立一个名为aspcn,值为灌水小鱼的cookieHttpCookie cookie = new HttpCookie["aspcn"];cookie.Value = "灌水小鱼";Response.AppendCookie(cookie);取出Cookie值也很简单HttpCookie cookie = Request.Cookies["aspcn"];cookieValue = cookie.Value;在一个Cookie中储存多个信息,

Asp.net下使用HttpModule模拟Filter,实现权限控制

在asp.net中,我们为了防止用户直接从Url中访问指定的页面而绕过登录验证,需要给每个页面加上验证,或者是在模板页中加上验证.如果说项目比较大的话,添加验证是一件令人抓狂的事情,本次,我就跟大家分享一个利用HttpModule实现权限验证的方法. 第一步: 在项目中新建一个类.cs文件,本例为Filter,应用一下命名空间,主要是为了访问Session. using System.Web.SessionState; 第二步:让这个类继承IHttpModel和IRequiresSessionS

Asp.net操作cookie大全

实例代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 下面是写cookie  HttpCookie cookie = new HttpCookie("Info");//定义cookie对象以及名为Info的项  DateTime dt = DateTime.Now;//定义时间对象  TimeSpan ts=

ASP.NET中的C#基础知识

ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知识做一个总结,方面后面的学习. 一.C#是一种面向对象的变成语言,主要用于开发可以在.net平台上运行的应用程序.是一种强类型语言,一次每个变量都必须具有声明类型.C#中有两种数据类型:值类型和引用类型.(其中值类型用于存储值,引用类型用于存储实际数据的引用). 1.值类型 值类型表示实际的数据,存

.NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军--将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到了一个问题--如何在asp.net core

c#/ASP.NET操作cookie(读写)代码示例

Cookie是存在硬盘上,IE存cookie的地方和Firefox存cookie的地方不一样.不同的操作系统也可能存cookie的地方不一样. 不同的浏览器会在各自的独立空间存放Cookie, 互不干涉以我的windows7, IE8为例,  cookie存在这: C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files 注意: 缓存文件和cookie文件,是存在一起的, 都在这个目录下. 你也可以这样找, 打

ASP.NET,Cookie,写Cookie,取Cookie

Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一.Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一起发送到服务器.浏览器对 Cookie 的大小有限制,因此,只有不超过 4096 字节才能保证被接受. 编写Cookie //方式1:Response.Cookies["username"].value="mike";Response.Cookies["use