import jwt
import datetime
# 秘钥,用于签名和验证JWT
SECRET_KEY = 'your_secret_key'
def create_token(payload):
"""
创建JWT token
:param payload: 需要编码到token中的载荷信息
:return: 生成的JWT token字符串
"""
# 设置过期时间(例如:1小时后过期)
payload['exp'] = datetime.datetime.utcnow() + datetime.timedelta(hours=1)
# 使用HS256算法生成JWT token
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
return token
def decode_token(token):
"""
解码JWT token
:param token: JWT token字符串
:return: 解码后的载荷信息字典,如果验证失败则抛出异常
"""
try:
# 验证并解码JWT token
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return payload
except jwt.ExpiredSignatureError:
# Token过期
return "Token has expired"
except jwt.InvalidTokenError:
# Token无效
return "Invalid token"
# 示例使用
if __name__ == "__main__":
# 创建一个示例载荷
example_payload = {'user_id': 123, 'username': 'example_user'}
# 创建token
token = create_token(example_payload)
print(f"Generated Token: {token}")
# 解码token
decoded_payload = decode_token(token)
print(f"Decoded Payload: {decoded_payload}")
jwt库来处理JWT的编码和解码。datetime库用于设置token的有效期。create_token函数接收一个载荷(payload),并为其添加一个过期时间(默认1小时后过期)。jwt.encode方法对载荷进行编码,并返回生成的JWT token字符串。decode_token函数接收一个JWT token字符串,并尝试对其进行解码。create_token生成token。decode_token对该token进行解码,输出解码后的载荷信息。希望这段代码能帮助你理解如何在Python中使用JWT。
下一篇:python args
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站