🔐 JWT 简介
什么是 JWT?
JWT 全称 JSON Web Token,是一种用于 身份验证和信息传递 的开放标准(RFC 7519)。
它是一段加密签名的字符串,结构如下:
xxxxx.yyyyy.zzzzz
由三部分组成(都是 Base64 编码):
- Header:令牌类型 + 签名算法(如 HS256)
- Payload:携带的数据(如用户信息、权限)
- Signature:签名(防篡改)
🧠 适合场景:
- 用户登录后返回 token,后续请求带上 token 验证身份
- 前后端分离认证
- OAuth、单点登录(SSO)
🧪 Python 使用示例(用 PyJWT
库)
📦 安装
pip install PyJWT
🛠 1. 生成 JWT Token
import jwt
import datetime
# 你的密钥
SECRET_KEY = 'my-secret-key'
# 生成 Token
payload = {
'user_id': 123,
'username': 'alice',
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1) # 1小时后过期
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
print("JWT:", token)
🛠 2. 验证并解码 Token
try:
decoded = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
print("Payload:", decoded)
except jwt.ExpiredSignatureError:
print("Token 已过期")
except jwt.InvalidTokenError:
print("无效的 Token")
🚨 注意事项
- JWT 是无状态的:服务端不会保存 token。
- 有效期 (
exp
) 一定要设置,否则容易被滥用。 - 不要把敏感信息(如密码)放进 JWT。
- 如果需要注销用户,JWT 本身不支持,你要额外做黑名单机制。