啥是JWT?
啥是JWT
JWT
是 Json Web Token
的简写,是目前最流行的跨域认证(单点登录)的解决方案。
原理
- 客户端登录,提交 账户 + 密码 到服务端
- 服务端验证 账户 + 密码 的正确性。通过后。将用户信息加密生成
token
- 服务端将
token
返回客户端 - 客户端将
token
存储在 本地缓存中(localStorage
、sessionStorage
) - 客户端重新发起请求时,会将
token
信息放入请求头中。(这里不管是否跨域,因为都可以获取到localStorage
、sessionStorage
中的token
) - 服务端解析
token
还原成用户信息。验证用户信息通过后,当请求内容返回浏览器。
组成
首先看一张图
可以看出 JWT
由 三部分构成 Header
(头部)+ .
+ Payload
(载体) + .
+ Signature
(签名)
- Header
JWT
的第一部分由token的类型和算法名称构成
{
"typ":"JWT", // token的类型
"alg": "HMAC" // 算法名称(HMAC、SHA256、RSA)
}
再将这个对象进行`Base64`编码得到`Header`
- Payload
JWT
的第二部分由用户信息构成
{
"name": "张三",
"id": "12346",
"isAdmin": true
}
再将这个对象进行`Base64`编码得到`Payload`
- Signature
JWT
的第三部分由编码过的Header
和Payload
+ 密钥 。在通过header中指定的加密方式进行加密。
HMAC(Base64(Header)+ '.' + Base64(Payload), secret)
和Session对比
Session
是在服务器端,JWT
是在客户端。Session
占用服务器内存开销,JWT
占用解密时间开销。Session
的状态是存储在服务器端,而Token
的状态是存储在客户端。
参考
https://www.cnblogs.com/cjsblog/p/9277677.html
https://juejin.cn/post/7070379141949816868
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~