Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python jwt

作者:〖掉望   发布日期:2026-07-17   浏览:24

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}")

解释说明:

  1. 导入库:我们使用jwt库来处理JWT的编码和解码。datetime库用于设置token的有效期。
  2. 创建Token
    • create_token函数接收一个载荷(payload),并为其添加一个过期时间(默认1小时后过期)。
    • 使用jwt.encode方法对载荷进行编码,并返回生成的JWT token字符串。
  3. 解码Token
    • decode_token函数接收一个JWT token字符串,并尝试对其进行解码。
    • 如果token有效且未过期,则返回解码后的载荷信息;否则,根据不同的错误类型返回相应的提示信息。
  4. 示例使用
    • 创建一个示例载荷,并调用create_token生成token。
    • 然后调用decode_token对该token进行解码,输出解码后的载荷信息。

希望这段代码能帮助你理解如何在Python中使用JWT。

上一篇:python collections

下一篇:python args

大家都在看

python 二维码识别

python excel 库

python时间格式

pythoneval函数用法

列表切片操作python

python读取文件路径

python集合中的元素可以是列表

staticmethod在python中有

python 保存json文件

python的assert基本用法

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站