session、cookie、token的区别
2018-12-12 本文已影响0人
ZMRWEGo
由于http协议是无状态的,为减轻客户端和服务器之间登录验证的麻烦,于是有了session和cookie这类玩意。
session和cookie
什么是session呢,客户端在第一次进行登录验证时,服务器会从数据库中查询对应的账号和密码,若匹配成功,则生成一个针对于此客户端的sessionID,(其本身应该是由过期时间的),将此SessionID发送给客户端。客户端可以存储到本地的cookie中,下一次就可以带着cookie信息直接访问,而不需要进行登录验证了。
Token
token又是什么呢?其实sessionID也是Token的一种实现方式,但是业界常用的还是比如像JWT这种的验证方式。
这里有关于JWT的详细介绍(https://www.cnblogs.com/yuanrw/p/10089796.html
),它的优点在于服务器不许要进行存储,只需要进行解密验证就行了,相当于是利用计算能力代替了存储空间。
token的组成为header+payload+signature。其中signature是对前两个字符串进行的签名。
优缺点:
JWT的优点:
-
安全性高,防止token被伪造和篡改
-
自包含,减少存储开销
-
跨语言,支持多种语言的实现
-
支持过期,发布者校验
JWT的注意事项:
-
消息体可以被base64解密为明文
-
不适合存放大量信息