【2023-03-23】Cookie、Session、Token的区别与联系

一、相同点

都是用于身份验证


二、不同点


1. 存储位置不同
Cookie和Token存储在客户端
Session存储在服务器端

例子:F12打开控制台,在application(应用)中可看到Ccokie、Token等信息,Token可以放在local storage、cookie或者session storage里面,如下图:

2.身份验证机制不同
Session+Cookie验证机制:
Session是用户第一次登录时,在服务器开辟一块内存空间保存用户登录相关信息,并返回一个SessionId给客户端保存,一般保存在Cookie里面。下次客户端发送请求时,会自动把Cookie发送给服务器,服务器拿到Cookie中的SessionId,通过SessionId查找到保存在服务器端的用户信息进行身份验证。

注意:Session和Cookie都可以单独使用,只不过只用Cookie如果用户登录信息都存Cookie会不安全;Session也不一定要跟Cookie同时使用,有些时候Cookie禁用后,SessionId可保存在local storage或者session storage,传递的时候通过url地址或者header传递。


JWT(json web token)验证机制:
Token是用户第一次登录时,服务器用一定的算法规则生成一个Token返回会客户端保存。这个Token不会保存在服务器端,Token本身包含了所有的用户信息,下次发送请求时,客户端可以把Token发送给服务器,由于服务器解密后进行身份验证。


3.安全性不同
安全性:Cookie<Session<Token
Cookie保存在客服端比较容易窃取。Session保存在服务服务器端相对安全。Token最安全因为Token的生成规则安全性比较高且有效期短不容易被篡改,防篡改但是不防盗用。
• PS:JWT生成的Token包含:header(头部,编码前JSON格式)+payload(载荷,编码前JSON格式))+signature(签名)。签名中由于包含了只有服务器知道的私密算法,所以比较安全。


4.时间空间效率不同
Session是以空间换时间:保存在服务器端会消耗服务器的内存,但是鉴权时间快
Token反过来:加解密过程比较耗时,但是节省服务器内存


5. 多服务器负载均衡的影响不同
Session在多台服务器进行负载均衡时如果没有对应的session共享机制比较容易出问题,例如创建Session是在服务器A但是下次请求到服务器B,就会出现未登录情况


6.发送请求时浏览器自动添加Cookie到请求中,Token需要开发主动添加


7.Session会在服务器端记录会话状态,而Token使服务器无状态化,无状态话以为server没有保存client的状态信息,所以发送的请求必须包含能够让服务器理解的全部信息,包含自己的状态信息。
http请求本身是无状态的,无状态意味着上一次请求和下一次请之间是完全独立没有关系的,服务器无法识别这些请求是否由同一个人发送。导致用户操作时每发送一次请求就需要重新登录一次。为了解决这个问题才诞生了Session和Token这种身份验证机制。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值