JWT 全称是 JSON Web Token,是一种用于 在网络应用环境间安全传输声明信息(如用户身份) 的令牌格式。
JWT 是一个字符串,里面包含了经过签名的用户身份信息,服务器可以验证这个字符串的合法性,而不用存储 session。
WT 的结构(由三部分组成)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. ← Header(头部)
eyJ1c2VyX2lkIjoxMjMsIm5hbWUiOiJhbGljZSJ9. ← Payload(载荷)
LxRj7sb6ehqvIoXJ4AlHuyJz8sRtHjdaT5yRKMpNMrY ← Signature(签名)
它由三段 Base64 编码的字符串拼接而成,每段之间用 . 分隔:
| 部分 | 内容说明 | 
|---|---|
| Header | 描述算法类型(如 HS256) | 
| Payload | 实际携带的数据(如用户ID、角色、过期时间) | 
| Signature | 签名,防止篡改,验证 JWT 的完整性 | 
Payload 示例(实际数据)
{
“user_id”: 123,
“username”: “alice”,
“exp”: 1723456000 // 过期时间(时间戳)
}
#生成 JWT
jwt.encode(payload, SECRET_KEY, algorithm=”HS256″)
在请求时发送给服务器,通常放在请求头:
Authorization: Bearer <JWT>
JWT 的注意事项
| 问题 | 说明 | 
|---|---|
| 安全性 | 签名密钥不可泄露;使用 HTTPS 传输 | 
| 不可撤销 | 一旦签发的 JWT 泄露,在过期前无法撤销(除非加入黑名单机制) | 
| 体积大 | 相比纯 token 或 session ID,体积大一些 |