一、什么是Session?
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
ASP.NET页面是"无状态"的,这意味着每次向服务器发送一个请求,服务器都会生成一个该页面的实例。但有时候,我们希望在不同的页面之间共享信息,比如购物车、用户登录等,于是,ASP.NET为我们提供了一个服务端的Session机制。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
二、Session是如何工作的以及工作机制和工作流程?
服务端的Session机制是基于客户端的,也就是说服务端的Session会保存每个客户端的信息到服务端内存中。
具体过程是这样的:
1、客户端向服务端发出请求
2、服务端响应客户端,并针对该客户端创建Session和唯一的Session
ID
3、把Session ID作为key, Session内容作为value,以键值对形式存储到Session State Provider中
4、客户端带着专属的Session ID再次向服务端请求
5、服务端的Session机制根据客户端的Session ID,从Session State Provider中取出内容返回给客户端。
三、MVC使用Session方式来实现用户身份验证
实现核心原理和具体实现步骤:
1)、客户端发送身份认证数据到服务器端服务器收到并验证后将用户信息保存到Session对象中。
2)然后生成对应的标识并将标识写入cookie中当客户端下次请求时带上该cookie标识服务器通过该cookie标识从session对象中获取对应的用户信息 。