JSON Web Token简单案例
时间: 2023-12-10 15:41:36 浏览: 135
Webapi_JWT_Authentication-master_webapi_jwt_token_
好的,下面是一个简单的基于 JSON Web Token(JWT)的身份验证案例:
1. 安装所需的库
```
pip install pyjwt
```
2. 生成JWT Token
```python
import jwt
import datetime
# 定义过期时间
expire_time = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
# 定义payload
payload = {
'user_id': '123456',
'username': 'john',
'exp': expire_time
}
# 生成token
jwt_token = jwt.encode(payload, 'secret_key', algorithm='HS256')
print(jwt_token)
```
上述代码中,我们使用了 pyjwt 库来生成 JWT Token。它的 encode() 方法接收三个参数:payload、密钥和算法。payload 是一个字典,包含我们想要在 Token 中存储的信息,例如用户ID、用户名、过期时间等等。密钥是一个字符串,用于加密 Token。算法是指用于加密 Token 的算法,这里我们选择了 HS256。
3. 验证JWT Token
```python
import jwt
# 定义Token
jwt_token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzNDU2IiwidXNlcm5hbWUiOiJqb2huIiwiZXhwIjoxNjMxMzEwMDUzfQ.XsDEjcd7jH8qC-6pZlWjZaFvDz-pT8NvQYrWb8I3-5c'
# 验证Token
try:
decoded_token = jwt.decode(jwt_token, 'secret_key', algorithms=['HS256'])
print(decoded_token)
except jwt.ExpiredSignatureError:
print('Token已过期')
except jwt.InvalidTokenError:
print('无效的Token')
```
上述代码中,我们使用了 pyjwt 库的 decode() 方法来验证 Token。它接收三个参数:Token、密钥和算法。如果 Token 有效,则返回包含信息的字典。如果 Token 过期或无效,则会引发 jwt.ExpiredSignatureError 或 jwt.InvalidTokenError 异常。
阅读全文