python中使用jwt
时间: 2024-03-30 13:27:50 浏览: 138
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准,它包括了三部分:头部(Header)、载荷(Payload)和签名(Signature)。Python中可以使用PyJWT库来实现JWT的生成和验证。
1. 安装PyJWT库
```
pip install PyJWT
```
2. 生成JWT
```python
import jwt
payload = {"user_id": "123456", "username": "alice"}
secret_key = "mysecretkey"
# 生成JWT
token = jwt.encode(payload, secret_key, algorithm="HS256")
print(token)
# 输出:b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzNDU2IiwidXNlcm5hbWUiOiJhbGljZSJ9.3s3t1n0I2bHhJjKkT9XnTbvTfTcIYwYeJvSbSujHlTo'
```
其中,payload是要加密的数据,secret_key是用于生成签名的密钥,algorithm指定签名算法,常用的有HS256、HS384、HS512等。
3. 验证JWT
```python
import jwt
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzNDU2IiwidXNlcm5hbWUiOiJhbGljZSJ9.3s3t1n0I2bHhJjKkT9XnTbvTfTcIYwYeJvSbSujHlTo"
secret_key = "mysecretkey"
# 验证JWT
try:
payload = jwt.decode(token, secret_key, algorithms=["HS256"])
print(payload)
# 输出:{'user_id': '123456', 'username': 'alice'}
except jwt.InvalidTokenError:
print("Invalid token")
```
如果验证成功,会返回payload的值,如果验证失败则会抛出InvalidTokenError异常。
阅读全文