gpt4 book ai didi

django-rest-framework - Allauth 不会返回所需的 token 负载

转载 作者:行者123 更新时间:2023-12-04 04:07:55 25 4
gpt4 key购买 nike

我有一个名为 merchant 的 django-rest-auth 项目。在其中,我使用 JWT 实现了 django-restauth 和 allauth 包。

一切正常。但是,我希望返回 JWT token 中的其他字段,这是我的实现。

在 app.views.py 中

def jwt_response_payload_handler(token, user=None, request=None):
return {
'token': token,
'user': User_Serializer(user, context={'request':request}).data
}

序列化器.py

class User_Serializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['email', 'username', 'is_staff']

设置.py

JWT_AUTH = {
'JWT_RESPONSE_PAYLOAD_HANDLER': 'merchant.coin_app.views.jwt_response_payload_handler',
'JWT_EXPIRATION_DELTA': datetime.timedelta(minutes=10),
'JWT_AUTH_HEADER_PREFIX': 'JWT'
}

返回的payload不包含email/is_staff。也许我遗漏了什么。

最佳答案

在生成 JWT token 后调用 JWT_RESPONSE_PAYLOAD_HANDLER 设置选项中注册的处理程序。

需要定制的处理器是JWT_PAYLOAD_HANDLER它创建了标记化的负载对象,而不是JWT_RESPONSE_PAYLOAD_HANDLER

在你的项目设置中,配置

JWT_AUTH = {
'JWT_PAYLOAD_HANDLER': 'merchant.coin_app.views.jwt_payload_handler',
'JWT_EXPIRATION_DELTA': datetime.timedelta(minutes=10),
'JWT_AUTH_HEADER_PREFIX': 'JWT'
}

然后在您的 View 中,扩展 rest_framework_jwt.utils.jwt_payload_handler 的结果

import rest_framework_jwt.utils.jwt_payload_handler as base_jwt_payload_handler

def jwt_response_payload_handler(user):
payload = base_jwt_payload_handler(user)
payload['user'] = User_Serializer(user).data
return payload

关于django-rest-framework - Allauth 不会返回所需的 token 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62212777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com