嘿,伙计们!今儿咱聊聊 PyJWT 这玩意儿,一个 Python 里专门搞认证加密的库,贼拉好用!想想看,在网络世界里飞来飞去的用户信息,要是没加密,那不跟裸奔似的吗?PyJWT 就是给这些信息穿上“黄金甲”的工具,保证你的数据安全!
JWT 是啥?
JWT,全称 JSON Web Token,简单来说就是一种规范,一种用 JSON 格式来传递信息的规范。它就像个小包裹,里面装着用户的信息,比如用户名、权限啥的。这小包裹还有个神奇的“封条”,也就是数字签名,保证里面的东西没被篡改过。PyJWT 怎么用?
PyJWT 这玩意儿用起来贼简单!你得装上它: pip install pyjwt
装好了,咱就开始玩代码!
import jwt
# 这儿是你的“密钥”,得藏好了,别让人偷窥了!
secret_key = “your-256-bit-secret”
# 把用户信息打包成 payload,就像往包裹里塞东西
payload = {
“user_id”:123,
“username”: “老王”,
“is_admin”:True # 老王是管理员!
}
# 用 jwt.encode 生成 JWT 字符串,相当于给包裹贴上“封条”
encoded_jwt = jwt.encode(payload, secret_key, algorithm=“HS256”)
print(encoded_jwt)
这段代码干了啥?它把老王的信息打包,然后用你的密钥加密,最后生成一个字符串,这就是 JWT!
解密 JWT
生成 JWT 后,咋解密呢?看代码: import jwt
secret_key = “your-256-bit-secret”
encoded_jwt = “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMjMsInVzZXJuYW1lIjoi5a6L5465IiwiaXNfYWRtaW4iOnRydWV9.IM9SCcY03jFlh5oXDzMr2y2oSQ6cV2ooe8r0lXKE9k4”
try:
decoded_payload = jwt.decode(encoded_jwt, secret_key, algorithms=[“HS256”])
print(decoded_payload)
except jwt.ExpiredSignatureError:
print(“JWT 过期了!”)
except jwt.InvalidTokenError:
print(“JWT 不合法!”)
温馨提示:解密的时候,算法得跟加密的时候一样,不然会报错!
过期时间
JWT 可以设置过期时间,就像酸奶一样,过期了就不能用了。 import jwt
import datetime
secret_key = “your-256-bit-secret”
payload = {
“user_id”:123,
“exp”:datetime.datetime.utcnow() + datetime.timedelta(minutes=30) # 30 分钟后过期
}
encoded_jwt = jwt.encode(payload, secret_key, algorithm=“HS256”)
print(encoded_jwt)
实际应用
这 PyJWT 能干啥?可多了!比如用户登录,你不用把用户信息存在数据库里,直接生成个 JWT 给客户端,下次客户端请求的时候带着 JWT 就行,服务器一验就知道是谁了。不同算法
PyJWT 支持好几种算法,比如 HS256、RS256 等等。HS256 用的是对称加密,也就是加密解密用同一个密钥;RS256 用的是非对称加密,加密用私钥,解密用公钥。PyJWT 这玩意儿,用起来简单,功能强大,赶紧试试吧!搞懂了它,你的 Python 项目立马安全感爆棚!