在使用Django做前端后端項(xiàng)目時(shí),登陸認(rèn)證方法往往使用的是jwt_token,但是想自定義登陸成功和失敗的返回體。
在項(xiàng)目目錄下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',# 后面跟著你視圖里定義函數(shù)}
自定義一個(gè)視圖編輯jwt_response_payload_handler。
defjwt_response_payload_handler(token,user=None,request=None):"""
? ? 設(shè)置jwt登陸返回的格式
? ? :param token:
? ? :param user:
? ? :param request:
? ? :return:
? ? """return{"msg":"success","status":200,"data":[{# data自定義你接口想返回的信息'token':token,'username':user.username}]}
現(xiàn)在的效果如下:
我們打開(kāi)/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中修改:
我們?cè)谧约旱囊晥D里編寫(xiě)一個(gè)jwt_response_payload_error_handler函數(shù)
defjwt_response_payload_error_handler(serializer,request=None):return{"msg":"用戶名或者密碼錯(cuò)誤","status":400,"detail":serializer.errors}
最后我們?cè)谖覀冺?xiàng)目的settings.py的JWT中添加錯(cuò)誤返回的函數(shù):
# jwt_token配置JWT_AUTH={'JWT_EXPIRATION_DELTA':datetime.timedelta(seconds=6000),# 登陸成功自定義 的返回結(jié)構(gòu)'JWT_RESPONSE_PAYLOAD_HANDLER':'Users.views.jwt_response_payload_handler',# 登陸失敗時(shí)自定義的返回結(jié)構(gòu)'JWT_RESPONSE_PAYLOAD_ERROR_HANDLER':'Users.views.jwt_response_payload_error_handler',}
最后的樣子就成為這樣: