在使用Django做前端后端项目时,登陆认证方法往往使用的是jwt_token,但是想自定义登陆成功和失败的返回体。
在项目目录下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。
defjwt_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}]}
现在的效果如下:
我们打开/usr/local/lib/python3.6/site-packages/rest_framework_jwt/settings.py在IMPORT_STRINGS中添加JWT_RESPONSE_PAYLOAD_ERROR_HANDLER:
/usr/local/lib/python3.6/site-packages/rest_framework_jwt/views.py中修改:
我们在自己的视图里编写一个jwt_response_payload_error_handler函数
defjwt_response_payload_error_handler(serializer,request=None):return{"msg":"用户名或者密码错误","status":400,"detail":serializer.errors}
最后我们在我们项目的settings.py的JWT中添加错误返回的函数:
# 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',}
最后的样子就成为这样: