summerLast
2021-09-14 10:58:26 +08:00
这个问题可以拆解成 3 部分
1 token 和 session 相同处是什么
因为 http 是一个无状态的协议 但很多场景需要状态 token 和 session 本质都是令牌或凭证
2 token 和 session 区别是什么
session 是 token 的一种实现 此处我们谈 token 的时候可以换成 JWT Token 和 session 去做对比,那 JWT Token 和 session 区别是什么呢? JWT 全称 JSON Web Token 也就是说是 JSON 格式的 Web 令牌,session 或 JWT Token 都是一个存放信息的容器,关键在于状态( C/S )谁来保持,及什么样的信息放在哪是服务器还是客户端更合适,放服务器优势是什么劣势是什么,放客户端优势是什么劣势是什么(可以参考计算机缓存内存硬盘的架构)
3 各自优势是否可结合
在一个应用多实例或前后端分离的情况下,不易变的信息放 JWT Token 相对更合适;不需要考虑这种情况下,放 session 更合适, 或者换句话说 让 Token 只做一个凭证就是一个身份证的事情,后面的映射交给后端
题外话:
其实就像为什么了有了硬盘还需要内存 有了内存还需要 CPU 缓存 ,结合各自的优势让问题得到更好的解决是目前比较好的方案,而不是非此即彼