服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP.NET教程 - .net中的session与cookies区别及使用方法

.net中的session与cookies区别及使用方法

2019-10-31 14:09asp.net教程网 ASP.NET教程

cookie数据存放在客户的浏览器上,session数据放在服务器上,cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session

先介绍一下比较简单的使用方法: 
给COOKIES赋值 

复制代码代码如下:


Response.Cookies["uid"].Value = "20"; 
Response.Cookies["LoginCode"].Value = "58469";


以上就是分别对两个COOKIES变量赋了两个不同的传,那么在使用COOKIES时,我们怎样来控制COOKIES的有效期呢,看下面: 

复制代码代码如下:


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


上面是分别对两个变量的有效期的1天,当然也是几小时,方法如下: 

复制代码代码如下:


Response.Cookies["LoginCode"].Expires =DateTime.Now.AddHours(1);


这是有效期为1小时,同样的方法可以类推成几分钟,几秒等等。 
那我们如何获得这些COOKIES的值呢?这里要注意一点,在COOKIES没有被赋值时,你要调用就会出错,所以我们一般在调用之前会先判断一下,此COOKIES是否存在,方法: 

复制代码代码如下:


if (Request.Cookies["uid"] != null) 

string ruid = Request.Cookies["uid"].Value; 


在.NET里独有的赋值方法: 

复制代码代码如下:


System.Web.HttpCookie user_cookies_id=new HttpCookie("uid"); 
user_cookies_id.Value="20"; 
user_cookies_id.Expires=DateTime.Now.AddDays(1); 
Response.AppendCookie(user_cookies_id); 
-------------------------------- 
HttpCooKie acookie=new Httpcookie("lastvisitcounter"); 
acookie.value=lastvisitcounter.ToString(); 
acookie.Expires=DateTime.MaxValue; 
Response.Cookie.Add(acookie); 
if(Request.Cookies["lastvisitcounter"]==null) 

textbox1.text="1"; 

else 

HttpCookie acookie=request.Cookies["lastvisitcounter"]; 
textbox1.text=server.HtmiEncode(acookie.value); 


session的使用 
session("username")="aa" 写入 
username=session("username") 读取 
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。 
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。 
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。 

对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 

Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。 
(1)将新的项添加到会话状态中 
语法格式为: 
Session ("键名") = 值 或者 Session.Add( "键名" , 值) 
(2)按名称获取会话状态中的值 
语法格式为: 变量 = Session ("键名") 或者 变量 = Session.Item("键名") 
(3)删除会话状态集合中的项 
语法格式为: Session.Remove("键名") 
(4)清除会话状态中的所有值 
语法格式为: Session.RemoveAll() 或者 Session.Clear() 
(5)取消当前会话 
语法格式为: Session.Abandon() 
(6)设置会话状态的超时期限,以分钟为单位。 
语法格式为: Session.TimeOut = 数值 
Global.asax 文件中有2个事件应用于Session对象 
事件名称 说明 
Session_Start 在会话启动时激发 
Session_End 在会话结束时激发 

.net 中的session与cookies 

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。HTTP 是一种无状态协议。这意味着 Web 服务器会将针对页面的每个 HTTP 请求作为独立的请求进行处理。服务器不会保留以前的请求过程中所使用的变量值的任何信息。ASP.NET 会话状态将来自限定时间范围内的同一浏览器的请求标识为一个会话,当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。 

举个例子来说,我们可以把已登录用户的用户名放在Session中,这样就能通过判断Session中的某个Key来判断用户是否登录,如果登录的话用户名又是多少。 

Cookies 
cookie 是一小段文本信息,伴随用户请求,在web服务器和浏览器之间传递。用户每次访问站点的时候, 
web应用程序都可以读取cookie包含的信息。 

假设在用户请求您的网站的某个页面时,您的应用程序不仅是返回请求的页面。同时也返回一个包含日期 
和时间的cookie。用户的浏览器在获得页面的同时也获得了cookie.并且cookie保存在客户端的cookie文件夹中。 

指定cookie的名字和要保存的值。可以创建多个,但每个cookie的名字必须唯一,以便日后取值时识别。(cookie是按名字储存的,要创建两个名称相同的cookie,那么最后那个cookie将覆盖前一个。)同时可以给cookie指定过期日期和时间.cookie是写入到用户硬盘上的,然后可能一直都留在磁盘上。因此,指定cookie的过期日期和时间。当用户下次访问站点的时候,浏览器会先检查您站点的所有cookie,如果某个cookie已经过期,浏览器不会把这个cookie随页面请求一起发送给服务器,而是删除。 

cookie 和session 的区别: 
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 
考虑到安全应当使用session 
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 
考虑到减轻服务器性能方面,应当使用COOKIE 
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

延伸 · 阅读

精彩推荐