JWT认证
JWT认证
Json Web Tokwn,一种认证机制。
JWT分为三个部分,JWT头 | 有效载荷 | 签名
1.JWT头——Header
{
"alg": "HS256", //签名使用的算法
"typ": "JWT" //令牌类型
}
最后,使用Base64 算法将上述JSON对象转换为字符串保存。
2.有效载荷——Payload
{
"iss":"发行人",
"exp":"过期时间",
"sub":"主题",
//自定义字段
"name":"java技术爱好者",
"isAdmin":"true",
"loginTime":"2021-12-05 12:00:03"
}
最后,使用Base64 算法将上述JSON对象转换为字符串保存。
3.签名——singnature
需要指定一个secretKey,该secretKey保存在服务器,使用Header指定的算法对Header和Payload进行计算,然后得出一个Signature。
JWT的优点
- json格式的通用性,所以JWT可以跨语言支持,比如Java、JavaScript、PHP、Node等等。
- 可以利用Payload存储一些非敏感的信息。
- 便于传输,JWT结构简单,字节占用小。
- 不需要在服务端保存会话信息,易于应用的扩展。
以前的认证方式session认证和token认证:
-
session认证,服务器保存用户信息,认证成功返回cookie给浏览器。缺点:信息保存在服务器占用空间;分布式部署应用会出现session不能共享、难扩展。
-
token认证,redis保存token实现共享、易扩展。缺点:每次请求都需要查询redis,造成redis的压力,增加请求的耗时,每个已登录的用户都要保存一个token在redis,也会消耗redis的存储空间。


浙公网安备 33010602011771号