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的存储空间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决