[ASP.NET]Session

前言:上一篇博客分享了一些关于cookie的内容,这篇博客是关于Session的。那么什么是Session,它和cookie又有什么关系呢?下面和大家分享一下Session的内容

(一)Session简介

1.是什么

Session提供了一种把信息保存在服务器内存中的一种方式。它能存储任何数据类型包括自定义对象。
每个客户端的Session是独立存储。

Session 对象用于存储有关用户的信息。
在整个用户会话过程中都会保留此信息。(保存SessionId的cookie丢失之前)

当用户在应用程序中从一个网页浏览到另一个网页时,存储在 Session 对象中的变量不会被丢弃。
Session只可由该会话的用户访问(因为SessionId的内容以cookie的方式保存访问者浏览器的缓存里了)
用户不能访问或修改他人的Session。

注意:当会话过期或终止时,服务器就会清除 Session 对象

2.开发场景

常用于保存登录用户ID

(二)操作和常用属性

Session[“uName”]=“CNYaoMing”;//开始并为Session赋值
string strName = Session[“uName”].ToString();//取值
Session.Abandon();//销毁服务器端的Session对象
Session.Clear();//清空服务端的Session对象里的键值对,Session对象并没有从Session池里销毁
属性描述
SessionID唯一用户会话标识符
TimeOut用户超时(单位:分钟),默认20分钟
Count会话状态集合中的项目数

(三)Cookie和Session对比

1.安全性

ASP.Net已经内置了Session机制。不要放太多的对象到Session(因为存储在服务器端fw的一个辅助进程里,不稳定,数据多了容易丢失。)。

Session会有【超时销毁的机制】(设置失效时间,默认就是滑动过期机制),发帖(服务器不可能知道浏览器是否在开着,什么时候关闭),发帖计时,在线时间统计,靠请求来判断是否开着。

2.Cookie和Session对比

Cookie是存在【客户端】,Session是存在【服务器端】。

目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session、Cookie)。不能放太大的数据,放的数据是object。如果浏览器禁用了Cookie可以启用Url来传递SessionID。

可以看到Session机制并不是Http协议规定的,是ASP.net实现的,现在PHP、JSP等大部分服务端技术都实现了Session,原理都差不多。

3.案例

案例一:Session实现登录,登录以后才能看一些内容。

案例二:用Session实现验证码

HttpHandler要能够操作Session,要实现IRequiresSessionState接口。为什么每次点击值都变化?很正常,因为每次页面点击页面都会刷新,就向ashx重新请求图片,ashx的ProcessRequest都会执行。正常网站登录成功就进入主页面,没机会让你看到变化,但是一旦输入错误也是变化。
每次点击都生成一个新的地址,让浏览器去请求。在AJAX中还会用。

 <img src=“YZM.ashx” οnclick=“this.src=‘YZM.ashx?aaa=’+new Date()” />//点击图片产生新的验证码

总结:session在开发中的应用也非常广泛,了解session的应用场景,将session更好的应用到实践中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值