如何实现免登录功能(cookie session?)

Cookie的机制

Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能。

Cookie的Domain和Path属性标识了这个Cookie是哪个网站发送给浏览器的;Cookie的Expires属性标识了Cookie的有 效时间,当Cookie的有效时间过了以后,这些数据就被自动删除了。

若是不设置过时时间,则表示这个Cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览会话期的 Cookie被称为会话Cookie。会话Cookie通常不保存在硬盘上而是保存在内存里。若是设置了过时时间,浏览器就会把Cookie保存到硬盘 上,关闭后再次打开浏览器,这些Cookie依然有效直到超过设定的过时时间。存储在硬盘上的Cookie能够在不一样的浏览器进程间共享,好比两个IE窗 口。而对于保存在内存的Cookie,不一样的浏览器有不一样的处理方式。

Session的机制

Session是存放在服务器端的相似于HashTable结构(每一种Web开发技术的实现可能不同,下文直接称之为HashTable)来存放用户 数据,当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来惟一标识这个HashTable,并将其经过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的全部Session ID进行对比,找到这个用户对应的HashTable。

通常状况下,服务器会在必定时间内(默认20分钟)保存这个HashTable,过了时间限制,就会销毁这个HashTable。在销毁以前,程序员能够 将用户的一些数据以Key和Value的形式暂时存放在这个HashTable中。固然,也有使用数据库将这个HashTable序列化后保存起来的,这 样的好处是没了时间的限制,坏处是随着时间的增长,这个数据库会急速膨胀,特别是访问量增长的时候。通常仍是采起前一种方式,以减轻服务器压力。

 

cookie和session的区别:

 
    

cookie
    

session

存储位置
    

浏览器
    

服务器

浏览器携带的数据量
    


    

少(只携带session-id)

存储的数据类型
    

只能是字符串
    

任意类型

安全性
    

较低
    

较高

默认的有效路径
    

当前目录及其子目录
    

整站有效

数据的传输量
    

有限制4K,不能超过20个
    

无限制

 

一些网站的3天免登录是如何作到的?

    方式一:首先想到的是使用cookie保存用户登陆信息,设置有效期,在用户下次访问时免去登陆环节,直接经过cookie获取用户信息。
    方式二:直接将session会话保存,用户下次访问时,继续使用这个session。
相比之下session显得更加安全,可是,你们知道,session会随着浏览器的关闭而消失(确切的说,是在客户端消失,服务器端的session存活周期取决于相应配置),当用户下次启动浏览器,访问网站时,又会获得由网站自动分配的新的session。那么,问题来了:

如何作到关闭浏览器后到下次登陆时session仍然有效?

思路:
一、在用户登陆成功时,建立session对象,保存用户信息
二、将此session的sessionid保存到cookie中


三、同时将sessionid于session对应关系存储到应用域中,以便后面能够根据sessionid来获取到session
四、在用户关闭浏览器,从新打开浏览器访问网站时,读取用户的cookie,获得sessionid


五、根据sessionid获取到第3步存储到应用域中的session对象
六、从session中读取用户信息
————————————————
版权声明:本文为CSDN博主「小骨格子屋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。
原文连接:https://blog.csdn.net/huihuikuaipao_/article/details/83022039程序员

相关文章
相关标签/搜索