Python库JWT实现token校验的示例

2024-04-11 17:04 Python库JWT实现token校验的示例已关闭评论

在Python中,使用PyJWT库进行JWT(JSON Web Tokens)的校验通常包括以下步骤:

首先,请确保已安装了PyJWT库,如果没有安装,可以通过pip安装:

pip install PyJWT

以下是一个基本的JWT校验示例:

import jwt
from datetime import datetime, timedelta

# 假设你的SECRET_KEY是用于签发和验证JWT的密钥
SECRET_KEY = 'your-secret-key'

# 解析并校验JWT
def verify_jwt_token(token):
    try:
        # 设置JWT过期时间,这里假设token有效期为1小时
        leeway = timedelta(seconds=10)  # 给定一个宽容的时间窗口,防止由于时钟不同步导致的问题
        expiration_time = datetime.utcnow() + timedelta(hours=1)

        # 解码JWT
        decoded_token = jwt.decode(
            token,
            SECRET_KEY,
            algorithms=['HS256'],  # 指定签名算法,这里是HS256
            options={'verify_exp': True},  # 验证过期时间
            leeway=leeway,  # 容忍度,允许一定范围内的误差
        )

        # 如果解码成功,decoded_token将包含载荷(payload)部分的内容
        # 这里你可以进一步验证token中的任何其他claim,如用户ID或其他必要的信息
        if decoded_token.get('exp') < datetime.utcnow().timestamp():
            raise jwt.ExpiredSignatureError('Token is expired')

        # 如果一切正常,你可以信任这个token,并从中提取用户信息等
        return decoded_token

    except jwt.PyJWTError as e:
        # 出现错误时打印错误信息并处理
        print(f'Error while verifying JWT: {e}')
        return None

# 示例使用
# 假设有一个从客户端收到的token
token = 'your-encoded-jwt-token'

verified_token_data = verify_jwt_token(token)
if verified_token_data:
    print("Token is valid and payload data:", verified_token_data)
else:
    print("Token validation failed.")

在这个例子中,我们首先导入所需的模块,然后定义了一个函数verify_jwt_token,它接受一个JWT作为参数,尝试对其进行解码并验证其有效性。如果token有效,则返回解码后的payload;否则,处理并返回None。

请注意,实际应用中你需要替换 'your-secret-key' 为你实际使用的密钥,并根据你的业务需求调整验证逻辑。

当前文章价值3.16元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/3269.html ,谢谢支持!

资源分享

分类:python 标签:, ,
选择排序算法 选择排序算法
TreeMap方法解析 TreeMap方法解析
python类属性和实例属性的定义 python类属性和实例属性的定义
对象系列化两种方法Serializable和Parcelable 对象系列化两种方法Serializabl

评论已关闭!