cookie、session、token三者之间的区别?

cookie:

cookie网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密),发送请求时,cookie会随着请求头一起发给服务器, cookie储存于浏览器

作用:识别用户信息,储存用户数据

cookie具有时效性,存活时间取决于不同的网站,在cookie未失效时,若再次登录该网站,则会自动登录,不需要重新输入账号与密码

网站给我们投放我们搜索浏览内容相关的广告是因为cookie储存着我们的浏览信息,浏览器为了恰饭,会查看我们的cookie从而推送相应的广告

session:

session是服务器为了保存用户状态而创建的一个特殊的对象。session储存在服务器

当用户第一次登陆网站时,服务器会生成一个session,并将该sessionID发送给用户储存在cookie中,当第二次发送请求时,sessionID就随着cookie一起发送,浏览器就可以识别出是谁发送的请求

当用户离开网站时,储存的session会被销毁

token:

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

作用机制:服务器并不保存token,而是通过数据签名的方法,对数据用算法(如SHA-256)与私钥进行签名后作为Token,当Token发送给服务器时,服务会通过相同的算法与密钥进行签名,如果和Token中的签名相同,服务器就知道用户已经登录过了,并且可以直接得到用户的userID。(服务器用cpu的计算时间来换取了储存空间)

接下来介绍各自的区别:

鉴权认证方式特点优点缺点
cookie1.存储在客户端。2.请求自动携带cookie。3.存储大小4KB1.兼容性好,因为是比较老的技术。2.很容易实现,因为cookie 会自动携带和存储。1.需要单独解决跨域
携带问题,比如多台
服务器如何共享
cookie。2.会遭受CSRF 攻击。3.存储在客户端,不够安全。
session1.存储在服务端。2.存
储大小无限制。
1.查询速度快,因为是个会话,相当于是在内存中操作。2.结合 cookie 后很容易实现鉴权。3.安全,因为存储在服务端。1.耗费服务器资源,
因为每个客户端都会
创建 session。2.占据存储空间,session 相当于存储了一个完整的用户信息。
token1.体积很小。2.自由操作存储在哪里。1.安全,因为 token一般只有用户 id,就算被截取了也没什么用。2.无需消耗服务器内存资源,它相当于只存了用户 id,session 相当于存储了用户的所有信息。3.跨域处理较为方便比如多台服务器之间可以共用一个token。1.查询速度慢,因为token只存了用户id,每次需要去查询数据库。

总结下就是:session是空间换时间,而token是时间换空间。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值