首页 技术 正文
技术 2022年11月15日
0 收藏 787 点赞 4,040 浏览 2045 个字

一、Cookie:

Cookie主要存储一些不敏感的数据,只能存储字符串类型

执行过程:
(1)第一次请求:
客户端将数据(比如用户名)以请求报文的形式请求服务器端响应,
服务器端得到数据(用户名),
如果登录成功则用Cookie保存在客户端上,Cookie创建并赋值如下:

HttpCookie cookie = new HttpCookie("键","值");
Response.Cookies.Add(cookie);

也可以通过浏览器发过来的请求报文来获得Cookie对象:

HttpCookie Cookie = context.Request.Cookies[Kits.ID];

(2)第二次请求:
这样就可以满足需求,当用户再次请求页面时,就可以对用户Cookie的判断,
来预先填充一些数据。

Cookie的取值代码如下:

Request.Cookies["键"].Value.ToString();

Cookie 可以设置过期的时间(设置Cookie为硬盘Cookie):

cookie.Expires = DateTime.Now.AddHours();

判断Cookie是否存在(判断获得的Cookie对象是否为空)

if(Request.Cookie["键"]==null){ }

二、Session:

要实现Session功能,必须实现System.Web.SessionState.IRequiresSessionState 标记接口

Session的存在也是为了免去用户重复性的去输入一些数据,
不同的是Session可以存储一些数据敏感的数据(Pwd,密码),可以是任意类型的,
这样就可以实现免登陆(用户登录一次之后,如果不退出浏览器,第二次可直接进入主页),

执行过程:
(1)第一次请求
浏览器将数据通过请求报文的形式,请求服务器端响应,
服务器判断用户名密码是否正确,

正确之后,用Session保存数据,代码如下:
存值,Session是以键值对形式存储的:

context.Session["键"]="值";

这一步是服务器端自动完成的,服务器会把Session存到Session池中,
Session池中对象的键(ASP.NET_SessionId)是随机生成的,
Session池中的值就是刚才存储的Session键值对,context.Session[“Pwd”],

将ASP.NET_SessionId以Cookie形式返回,返回的Cookie是以缓存保存在浏览器端,

(2)第二次请求
在第一次请求后,浏览器已经获得了一个ASP.NET_SessionId,
在第二次请求时,会将ASP.NET_SessionId带到请求报文头中,
这样在执行aspx页面的管道事件的第9到第11个事件时,根据ASP.NET_SessionId
找到Session池中对应的Session对象,并将这个对象赋值给上下文对象context中。

Session的取值代码如下:

Context.Session["键"].ToString();

将Session清除的代码如下:

Context.Session.Abandon();

判断Session是否存在Session(判断获得的Session对象是否为空)

if(Context.Session["键"]==null){ }

三、可以使用Cookie与Session的组合来一些功能

(1)需求:用户登录一次页面成功之后,以后再登录其他页面时可以不用通过登录页面,
前提是只要不退出浏览器,一旦退出浏览器,用户需重新通过登录页面

这是通过Session来实现

登录成功后将查找到的用户名存到Session中:

context.Session["键"]="值";

以后每个页面首先判断Session是否存在:

if(Context.Session["键"]==null){ }

(2)需求:实现用户的7天免登录,

这是通过Session 与Cookie组合完成的

登录成功后将查找到的用户名存到Session中:

context.Session["键"]="值";

如果用户选择了免登录,因为Cookie不能存储用户敏感数据,
用Cookie记录当前用户的ID,并设置过期时间为7天,

HttpCookie cookie = new HttpCookie("键","值");
cookie.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(cookie);

以后在判断完Session是否存在后,再判断用户 ID的Cookie是否存在,
如果Cookie存在,则取出ID,并在数据库中查找用户名赋值给Session,

stringID= Request.Cookies["键"].Value.ToString();
然后查询出用户名,
context.Session["键"] = "用户名";

(3)需求:登录成功之后,在每个页面上显示用户名

通过Session实现
在aspx前台页面上如下代码:

<%= Session["键"] %>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,029
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,519
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,367
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,146
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,781
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,859