一、前情提要
因为许多文章更多是这三者的总结和比拟,而本文次要是对 Cookie、Session、Token 的了解,因而并不波及到具体的优缺点、生命周期等细节的货色
二、Cookie
1.Cookie 的实质:过来咱们去奶茶店买奶茶的时候,他会给你一张纸卡,你每生产一次,这张纸卡就会记录一次你的生产记录
2.Cookie 存在的问题
- 因为你每次都须要记录(比如说奶茶店会给你盖章示意喝奶茶一次),Cookie 的长度通常来说比拟长(盖章太多),这样服务端和客户端之间传递的信息量就会比拟大
- Cookie 不平安,因为在客户端进行存储,他人能够依据本地的 Cookie 来进行假装,从而对服务端的平安产生威逼
- 因为在客户端进行存储,当在 A 电脑登录时,能传递信息给客户端,但当在 B 电脑登录时,却没有了。比方我想在任何设施查看购物车信息就没有方法通过 Cookie 进行存储
三、Session
1.session 的实质:当咱们去奶茶店买奶茶的时候,他会给你一张卡,下面有卡号,咱们能够通过卡号,你每生产一次,让店员在操作机上给你记录一次
2. 解决下面 Cookie 的问题
- 因为 SessionID(卡号)是一串数字,绝对于 Cookie 来说(盖章),它是没有那么长的,这样客户端和服务端之间传递的信息量就小
- 假如应用 Cookie 实现 Session 时,因为客户端只存储了 SessionID,那么即便 SessionID 被窃取,也不会对服务端的平安产生影响,只会对你的信息产生影响罢了(谁让你本人丢了呢?doge)
四、Token
1. 为什么要引入 Token?
- 仔细的同学可能发现了,Cookie 存在的第三个问题呢,怎么 Session 没解决掉呢,而这就是咱们为什么要引入 Token 的起因之一
- 服务器须要存储 SessionID,这会加大服务端的压力,而 Token 不须要存储在服务端
- 在分布式中,如果咱们没有存储 SessionID 的服务器 B 去申请服务器 A,会呈现无奈申请的状况
2.Token 的验证过程( 留神这里不是服务器端和 token 进行比拟
,他是整个 token 中曾经含有了签名,让 token 本人含有的签名和破解密钥后的签名进行比拟)