简述 Cookie、Token、JWT、Session之间的关系

背景

早期互联网只是用来访问查看,不需要关心谁在访问查看。HTTP是一种无状态的协议,每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,为了标示用户,就出现了Cookie,而CookieTokenJWT 都是用来标示用户的。

Cookie

如:iChochy用户发起访问,服务端为了进行会话跟踪,会为当前用户的访问会话(Session)生成一个会话ID(Session ID),并通过Set Cookie方式,将Session ID发送给用户的客户端浏览器。客户端自动识别服务端发来的Cookie信息,就会存储在客户端。再次请求时,都带上这个Cookie信息来标示当前用户,服务端自动识别到Cookie信息,就可以判断具体是哪个用户了。
在这里插入图片描述

Token

Token是一个令牌,用户登录成功后服务端会生成一个令牌,用来关联会话(Session)信息,如同Cookie,只是需要手动传递。

JWT

JWTJSON Web Token的简称,可以理解为是Token的升级版本,用户登录成功后服务端会生成的一个很长的字符串,中间用点(.)分隔成三个部分,内容包含Header.Payload.SignatureJWT的不同点就是可以携带具体的用户信息,不再只是标示ID

Session

Session就是服务端生成的用户会话信息,一般就是用户信息,存储在服务端。

对比Cookie、Token、JWT

不同点CookieTokenJWT
标准系统默认自定义自定义
用户标示包含包含包含
跨域不支持支持支持
具信信息不包含不包含包含

关系

关系如下图:
在这里插入图片描述

总结

CookieTokenJWT都是请求无状态的一种补充,用来标示用户,只是侧重点不同。Cookie是最原始的系统默认标准,前后端都会自动处理Cookie信息,不需要过多的干预。而TokenJWT都是标准的升级和自定义,Token出现解决了Cookie不能跨域的问题,而JWT可以携带具体的用户信息,将用户信息存储在客户端,解决了分布式用户信息存储。

Session是用户会话的具体信息,一般就是用户信息,如IDRoleAuth等。

源文:https://ichochy.com/posts/20200825/

Thinkingcao CSDN认证博客专家 Java Spring Boot 微服务
CSDN2019年度博客之星、博客专家,专注架构、Java、Spring、SpringBoot、SpringCloud、微服务、数据库、分布式、中间件、源码分析、JVM性能调优、K8S等领域
微信搜索公众号:「Thinking曹」,一个执着于架构的JAVA基层码农,每天带你学习新知识。
相关推荐
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值