ASP.NET---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的过期时间,那么提示用户登录超时

工作流程:

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. 清除验证码,可以减少服务端内存的占用
发布了108 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lclcsdnblink/article/details/103954609