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,体积大一些 |