Session

目录

为什么要用Session?

什么是Session?

从Cookie延申到Session

应用场景:

工作流程:

Session的销毁(声明周期)

重点:


为什么要用Session?

在Web发展中,我们知道浏览器与服务器之间采用的时http协议,而这种协议是无状态的,所以这就导致了服务器无法知道是谁在浏览网页,但很明显,一些网页需要知道用户的状态,例如登录,购物车等。

 

什么是Session?

Session是服务端一种状态保持机制,可以将各种类型数据存储到Session,最终这些数据是存储到服务端的内存中。

 

从Cookie延申到Session

Cookie是有大小限制和数量限制的,并且越来越多的Cookie代表客户端和服务器的传输量增加,可不可以每次传的时候不传所有cookie值,而只传一个唯一的ID,通过这个ID直接在服务器找用户信息呢?答案是有的,这就是Session。

Session是基于Cookie来工作的,同一个客户端每次访问服务器时,只要当浏览器在第一次访问服务器时,服务器设置一个id并保存一些信息(例如登录就保存用户信息)并把这个id通过Cookie存到客户端,客户端每次和服务器交互时只传这个id,就可以事先维持浏览器和服务器的状态

 

应用场景:

用户登录和登录超时

1.用户登录之后可以访问其他页面,但是如果不用Session验证,那么不法之人就可以通过知道你的地址就可以访问其他页面,所以需要验证是否登录之后才可以访问页面

2.用户在一个界面等待时间过长,到达了Session的过期时间,那么提示用户登录超时

3.在用户没登陆之前,存的账号和密码都在Cookie中,点击登录提交成功之后,用到了session。cookie会将密码账号给了服务端的session,进行创建空间,返回sessionID(标识给用户分配的唯一控件)给浏览器,存在浏览器的Cookie当中,之后浏览网页都可以用过sessionid标识到该用户,用户第一次提交就将用户的信息传到了服务器Session中,然后将这个值放在了一个空间,将这个空间标识一个Sessionid,给了客户端,这个客户端就可以浏览登录之后的所有页面,每次浏览页面,向服务器发sessionid,确定是该用户在操作,一旦用户退出或者20分钟没有向服务器发请求(服务器会一直维持20分钟),那么就给它删除了。(每个网站只能登录一个账号,也就是一个对应的SessionID),如果没有Session的话,就是来回发Cookie,传的数据肯定比SessionID多,所以有了Session提高了运行速度,减轻了浏览器的内存压力。

 

工作流程:

1.用户点击提交,将用户输入的内容提交(以post请求)到aspx页面(服务器端)

2.aspx页面执行代码,当给Session赋值时,那么会存储到服务器的内存中(因为session时服务端状态保持机制,在内存中存储数据时,服务器会开辟Seesion的存储区域,这个区域在分响应的存储单元,并且每个单元加上一个编号,这个编号叫SessionID),当执行到跳转页面代码时,这时服务器会向浏览器返回一个302和location,这时SeesionID会以Cookie的形式返回给浏览器,存储在浏览器的内存中。

3.浏览器接收到服务器返回的数据以后发现时302,那么浏览器会重新向Location指定的页面发送请求,同时将SessionID放在请求报文中,发送到服务端对应的页面中。

Session的销毁(声明周期)

Session的声明周期是从创建到超过过期时间,也就是说,当Session创建后,浏览器关闭,会话级别的Cookie被销毁,如果没有超过设定的时间,该SessionID对应的session是没有被销毁的,但是SessionID没有了,在访问时,就找不到了。如果到了过期时间,那么该SessionID对应的session是被销毁.但是SessionID没有被销毁,直到关闭该浏览器SessionID消失。

  1. SessionID在关闭浏览器时消失
  2. SessionID对应的session内容到了过期时间消失,它的生命周期会随着用户的访问而增加

 

重点:

  1. 每个用户都有一个单独自己的Session对象
  2. 由于Session数据是存储在服务端内存中,不要将过大的数据赋值给Session
  3. 验证码验证成功之后,需要删除该Session,有以下两点原因
    1. 用户第二次登录的时候,需要重新验证验证码(如果不清除,那么不法之人就可以根据这个验证码,在Session过期时间之内,不断试用户名和密码,就减少了一层安全保护)
    2. 清除验证码,可以减少服务端内存的占用

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值