📜  创建 jwt 令牌 python (1)

📅  最后修改于: 2023-12-03 14:50:14.116000             🧑  作者: Mango

创建 JWT 令牌 Python

JWT(JSON Web Token)是一种用于在网络应用之间传递信息的开放标准(RFC 7519)。JWT由三部分组成,即头部、负载和签名。其中,头部用于描述关于该JWT的最基本信息;负载包含要传递的用户信息等附加数据;签名则用于对JWT进行验证。

在 Python 中,我们可以使用 PyJWT 库来生成和验证 JWT 令牌。下面是一个简单的示例,演示了如何创建 JWT 令牌。

安装 PyJWT 库

首先,我们需要安装 PyJWT 库。在命令行中执行以下命令即可:

pip install PyJWT
创建 JWT 令牌

接下来,我们可以使用 PyJWT 库来创建 JWT 令牌。下面是一个示例代码片段:

import jwt
import datetime

# 创建 Payload
payload = {
    'user_id': 12345,
    'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
}

# 使用秘钥生成 JWT Token
jwt_token = jwt.encode(payload=payload, key='your_secret_key', algorithm='HS256')

print(jwt_token)

该代码片段中,我们首先定义了一个 Payload,也就是要携带的数据。上面的 Payload 包含了一个用户 ID 和一个过期时间。然后,我们使用 jwt.encode 方法生成 JWT 令牌。其中,payload 参数表示要携带的数据,key 参数表示用于签名的秘钥,algorithm 参数表示使用的签名算法。最后,我们将生成的 JWT 令牌打印出来。

验证 JWT 令牌

在实际应用中,我们需要使用 JWT 令牌来验证用户身份。下面是一个示例代码片段,演示了如何验证 JWT 令牌:

import jwt
import datetime

# 定义 Token 和秘钥
jwt_token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjM0NSwiZXhwIjoxNjIyMzY1MTg5fQ.JtRKaOgIluTO1YoD772yC3z_EDLXxePmJctmEV0HJdQ'
secret_key = 'your_secret_key'

# 解码 Token
decoded_token = jwt.decode(jwt_token, secret_key, algorithms=['HS256'])

# 获取 Payload 中的数据
user_id = decoded_token['user_id']
expiration_time = decoded_token['exp']

# 验证 Token 是否过期
if datetime.datetime.utcnow() > datetime.datetime.fromtimestamp(expiration_time):
    print('Token 已过期')
else:
    print('Token 未过期')

该代码片段中,我们首先定义了一个 JWT 令牌和秘钥。然后,我们使用 PyJWT 库中的 jwt.decode 方法解码 JWT 令牌,获取其中的 payload 数据。最后,我们验证 JWT 令牌是否过期。如果过期了,那么说明用户的身份验证失败,否则说明验证成功。

总结

使用 PyJWT 库可以方便地创建和验证 JWT 令牌,从而实现用户身份验证等功能。在使用 JWT 令牌时,我们需要注意保护秘钥的安全性,避免被恶意攻击者利用。