软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP教程 > Cookie 和Session,实现伪Session

Cookie 和Session,实现伪Session

在网上东一段西一段的读了一些有关Cookie和Session的文章,自己也总结一下。

1, Cookie :分为2类

a) 会话性质的Cookie,存放于浏览器内存中,没有指定过期时间,当关闭浏览器时就失效

b) 存储在客户端硬盘上的Cookie,指定了过期时间,会将其保存在客户端得文件中

2,Session :保存在服务器上的用户数据,可以依赖于Cookie,也可以不依赖于Cookie,

当依赖于Cookie时,客户端和服务端通过互相传递一个SessionID来确定客户端用户的身份

当不依赖于Cookie时,可以通过Url参数来确实客户端用户的身份,格式为

http://localhost/UrlReWrite/(S(gzlhzp55q51okj45nx20scvk))/Main.aspx 红色部分即为加密过后的SessionID。

其过程如下:

Session是保存在服务端,默认情况下20分钟会清除对于不活动的session。清除是服务端行为,而不是客户端行为。因此即使关闭了浏览器,Session其实还没过期,一直还保留在服务器上,如果使用URL传递SessionID,当继续使用之前的SessionID访问服务器时,还会找到相应的用户信息。

在CSDN论坛上看到一个问题说如果服务端得Session被禁了,怎么模拟伪Session(一个面试题),如果是我,我会这么解决:

1,服务端建一个数据库,里面会有2个表,如下:

表1

mySessionID Nvarchar(50) Unique

CheckInDate DateTime

表2

mySessionID Nvarchar(50)

Key Nvarchar(50)

Value Nvarchar(50)

表1的作用的保持确认用户身份的mySessionID(这个命名是为了区别于系统的SessionID)

表2 是存储用户相关数据用的

1, 当客户端第一次访问服务端时,我会通过计算(至于这么计算的不在这里的考虑范围)生成一个mySessionID 给这个Request,并添加到表1中,然后用户保存在服务端的数据会存在表2中

2, 当Response给客户端时,将mySessionID添加到Cookie里返回给客户端,然后下次客户端Request时就可以通过Cookie将自己的mySessionID传到服务端,得到这个mySessionID后,服务端会更新表1中相应的CheckInDate,并可以进行一系列的操作。

3, 至于mySession的过期处理,可以通过一个线程或者一个window服务来每隔20分钟对表1进行清理(如果表一中CheckInDate和当前时间间隔超过20分钟则清理这个用户的数据)

大致的流程差不多就是这样,我想这么做应该是能实现模拟Session的。

    相关阅读
    栏目导航
    推荐软件