• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

自定义Django_rest_framework_jwt登陆错误返回的解决

python 搞代码 4年前 (2022-01-07) 16次浏览 已收录 0个评论

这篇文章主要介绍了自定义Django_rest_framework_jwt登陆错误返回的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在使用Django做前端后端项目时,登陆认证方法往往使用的是jwt_token,但是想自定义登陆成功和失败的返回体。

1.当用户名和密码正确就会生成token,返回response是调用的是JWT_RESPONSE_PAYLOAD_HANDLER,如果想自定义返回体就需要重写jwt_response_payload_handler函数。

在项目目录下settings.py中,添加JWT_RESPONSE_PAYLOAD_HANDLER

 JWT_AUTH = { 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=6000), 'JWT_RESPONSE_PAYLOAD_HANDLER': 'Users.views.jwt_response_payload_handler',  # 后面跟着你视图里定义函数 } 

自定义一个视图编辑jwt_response_payload_handler

 def jwt_response_payload_handler(token, user=None, request=None): """ 设置jwt登陆返回的格式 :param token: :param user: :param request: :return: """ return { "msg": "success", "status": 200, "data": [{ # data自定义你接口想返回的信息 'token': token, 'username': user.username }] } 

现在的效果如下:

 

2. Django中jwt错误返回的是{"non_field_errors":["无法使用提供的认证信息登录。"]},当用户名或密码错误时,是不会去调用jwt_response_payload_handler,那么失败时调用的是什么函数了,JWT_RESPONSE_PAYLOAD_ERROR_HANDLER,但是发现这个方法并没有合到master分支,那么我们就需要手动给他合并进去。

我们打开/usr/local/lib/python3.6/site-packages/rest_framework_jwt/settings.pyIMPORT_STRINGS中添加JWT_RESPONSE_PAYLOAD_ERROR_HANDLER:

/usr/local/lib/python3.6/site-packages/rest_framework_jwt/views.py中修改:

我们在自己的视图里编写一个jwt_response_payload_error_handler函数

 def jwt_response_pa<i style="color:transparent">来源gaodai$ma#com搞$$代**码网</i>yload_error_handler(serializer, request = None): return { "msg": "用户名或者密码错误", "status": 400, "detail": serializer.errors } 

最后我们在我们项目的settings.pyJWT中添加错误返回的函数:

 # jwt_token配置 JWT_AUTH = { 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=6000), # 登陆成功自定义 的返回结构 'JWT_RESPONSE_PAYLOAD_HANDLER': 'Users.views.jwt_response_payload_handler', # 登陆失败时自定义的返回结构 'JWT_RESPONSE_PAYLOAD_ERROR_HANDLER': 'Users.views.jwt_response_payload_error_handler', } 

最后的样子就成为这样:

到此这篇关于自定义Django_rest_framework_jwt登陆错误返回的解决的文章就介绍到这了,更多相关Django_rest_framework_jwt登陆错误内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是自定义Django_rest_framework_jwt登陆错误返回的解决的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:自定义Django_rest_framework_jwt登陆错误返回的解决

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址