cookie、session、token的一些理解

cookie

cookie是一种记录客户状态的机制,由服务器生成,发送给用户浏览器,存储在用户端浏览器,,下次请求同一网站时给服务器。

session

session也是一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问

服  务器的时候,服务器把客户端信息以某种形式记录在服务器上,客户端浏览器再次访问时只需要从该Session中查找该客户的

状态就可以了。

token

令牌,是用户身份的验证方式。

  • 一个Token就是一些信息的集合,在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率
  • 服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查
  • 基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;因为token是被签名的,所以我们可以认为
  • 一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的
  • 最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)

cookie与session区别

  • 存储位置不同:cookie数据存放在客户端上,session数据放在服务器上;
  • 存储大小不同:单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie;对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
  • 存储方式不同:cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据;session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。
  • 有效期限不同:开发可以通过设置cookie的属性,达到使cookie长期有效的效果;session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。

session与token

  • 生成方式:浏览器第一次访问服务器,根据传过来的唯一标识userId,服务端会通过一些算法,如常用的HMAC-SHA256算法,然后加一个密钥,生成一个token,然后通过BASE64编码一下之后将这个token发送给客户端;浏览器第一次访问服务器,服务器会创建一个session,然后同时为该session生成一个唯一的会话的key,也就是sessionid,然后,将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中,然后服务器再把sessionid,以cookie的形式发送给客户端。
  • 有无状态:session有状态;token无状态
  • 是否存储:session要存储;token无存储

token与cookie

Cookie是不允许垮域访问的,但是token是支持的,前提是传输的用户认证信息通过HTTP头传输。

  • token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;
  • cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;
  • session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值