django-JWT自定义payload
时间: 2024-10-01 21:04:53 浏览: 42
Django-JWT(JSON Web Tokens)是一个用于处理JWT认证的库,它允许你在Django应用中安全地传输用户信息。自定义payload是在JWT中添加额外数据的一种方式,这些数据可以包含除了标准的认证信息之外的任何用户特定信息。
默认情况下,JWT payload包含了三个部分:`iss`(签发者)、`sub`(主题)和`iat`(签发时间)。但是,你可以通过设置`get_jwt_payload()`方法来自定义payload内容。例如:
```python
from rest_framework_jwt.utils import get_username_from_object
def custom_get_payload(user):
username = get_username_from_object(user)
# 添加自定义字段
extra_data = {
'exp': datetime.utcnow() + timedelta(hours=1), # 过期时间
'custom_field': user.email # 用户邮箱作为自定义信息
}
return {**extra_data, **super().get_jwt_payload(user)}
jwt.JWT_PAYLOAD_HANDLER = custom_get_payload
```
在这个例子中,我们增加了`exp`(过期时间)和`custom_field`(用户邮箱)到payload中。当验证JWT时,这些额外的信息会被读取并供你的应用使用。
阅读全文