我在哪里可以覆盖 jwt_response_payload_handler 方法?
Where can I override jwt_response_payload_handler method?
我已经用 pip 安装了 JWT。现在我想覆盖方法
def jwt_response_payload_handler(token, user=None, request=None):
return { 'token': token, }
成为
def jwt_response_payload_handler(token, user=None):
return {
'token': token,
'user': UserSerializer(user).data
}
我应该在哪里覆盖它?我是否在我自己的应用程序中重写该方法,但在哪里以及如何重写?还是修改库中的原始代码?
我已经修改了库中的方法并且它工作正常,但我认为这不是正确的做法。有人能帮我吗?谢谢
创建自己的处理程序方法后,您必须在 JWT_AUTH 设置中更改它。查看文档中的 Additional Settings 部分。
我发现执行以下操作很成功:
myapp.view.py 文件:
def jwt_response_payload_handler(token, user=None, request=None):
return {
'token': token,
'bunny': 'fu fu'
}
setting.py 文件:
JWT_AUTH = {
'JWT_RESPONSE_PAYLOAD_HANDLER':
#'rest_framework_jwt.utils.jwt_response_payload_handler',
'myapp.views.jwt_response_payload_handler',
}
在任意位置执行函数 jwt_response_payload_handler
,但要确保它在您的 python 路径中。例如在这个文件中:myapp.views.py
然后在您的 settings.py 文件中用您刚刚创建的 jwt_response_payload_handler
的新位置更新 JWT_AUTH
字典键 JWT_RESPONSE_PAYLOAD_HANDLER
。
一旦您了解了正在发生的事情,您就可以根据需要调整解决方案。例如,我不建议将重写的函数留在 views.py 文件中。只是为了演示目的更简单。
也许将 jwt_response_payload_handler
函数放在您创建的 "helper.py" 文件中是一个简单的解决方案。
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
我已经用 pip 安装了 JWT。现在我想覆盖方法
def jwt_response_payload_handler(token, user=None, request=None):
return { 'token': token, }
成为
def jwt_response_payload_handler(token, user=None):
return {
'token': token,
'user': UserSerializer(user).data
}
我应该在哪里覆盖它?我是否在我自己的应用程序中重写该方法,但在哪里以及如何重写?还是修改库中的原始代码?
我已经修改了库中的方法并且它工作正常,但我认为这不是正确的做法。有人能帮我吗?谢谢
创建自己的处理程序方法后,您必须在 JWT_AUTH 设置中更改它。查看文档中的 Additional Settings 部分。
我发现执行以下操作很成功:
myapp.view.py 文件:
def jwt_response_payload_handler(token, user=None, request=None):
return {
'token': token,
'bunny': 'fu fu'
}
setting.py 文件:
JWT_AUTH = {
'JWT_RESPONSE_PAYLOAD_HANDLER':
#'rest_framework_jwt.utils.jwt_response_payload_handler',
'myapp.views.jwt_response_payload_handler',
}
在任意位置执行函数 jwt_response_payload_handler
,但要确保它在您的 python 路径中。例如在这个文件中:myapp.views.py
然后在您的 settings.py 文件中用您刚刚创建的 jwt_response_payload_handler
的新位置更新 JWT_AUTH
字典键 JWT_RESPONSE_PAYLOAD_HANDLER
。
一旦您了解了正在发生的事情,您就可以根据需要调整解决方案。例如,我不建议将重写的函数留在 views.py 文件中。只是为了演示目的更简单。
也许将 jwt_response_payload_handler
函数放在您创建的 "helper.py" 文件中是一个简单的解决方案。
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)