cookie概念
在浏览某些网站时,这些网站会把一些数据存在 客户端 , 用于使用网站等跟踪用户,实现用户自定义功能.如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,关闭浏览器后消失。每次访问同源网络链接时都会发送一次cookie。
- 一般保存在内存,不在硬盘(如果设置了过期时间, 浏览器会把cookie保存在硬盘上,关闭再打开浏览器, 这些cookie 依然有效直到超过的设置过期时间;)
session概念
Session是存放在服务器端的类似于HashTable结构(每一种web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据;
- 作用:实现网页之间数据传递,是一个存储在服务器端的对象集合
- 原理:当用户请求一个Asp.net页面时,系统将自动创建一个Session;退出应用程序或关闭服务器时,该Session撤销。系统在创建Session时将为其分配一个长长的字符串标识,以实现对Session进行管理与跟踪。
区别
- cookie数据存放在客户的浏览器上,session数据放在服务器上.
- cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。
- session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
- 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)
注:当多客户端时抛弃cookie方式(因为像ios安卓一类的不会自动发送cookie) 可以改用请求头+token来进行认证
如何判断用户是否登录
登录后会把用户信息,比如用户id或者token等等存入到session和cookie中,其中session存在服务器,cookie存在浏览器,在访问页面时,浏览器会自动带着此网页上的cookie去访问此网页,这时cookie会被发送到服务器中寻找与之匹配的session,来确定登录信息并返回