最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

自定義Django_rest_framework_jwt登陸錯(cuò)誤返回的解決

 更新時(shí)間:2020年10月18日 16:19:15   作者:v饅頭  
這篇文章主要介紹了自定義Django_rest_framework_jwt登陸錯(cuò)誤返回的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在使用Django做前端后端項(xiàng)目時(shí),登陸認(rèn)證方法往往使用的是jwt_token,但是想自定義登陸成功和失敗的返回體。

1.當(dāng)用戶(hù)名和密碼正確就會(huì)生成token,返回response是調(diào)用的是JWT_RESPONSE_PAYLOAD_HANDLER,如果想自定義返回體就需要重寫(xiě)jwt_response_payload_handler函數(shù)。

在項(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。

def jwt_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)在的效果如下:

在這里插入圖片描述 

2. Django中jwt錯(cuò)誤返回的是{"non_field_errors":["無(wú)法使用提供的認(rèn)證信息登錄。"]},當(dāng)用戶(hù)名或密碼錯(cuò)誤時(shí),是不會(huì)去調(diào)用jwt_response_payload_handler,那么失敗時(shí)調(diào)用的是什么函數(shù)了,JWT_RESPONSE_PAYLOAD_ERROR_HANDLER,但是發(fā)現(xiàn)這個(gè)方法并沒(méi)有合到master分支,那么我們就需要手動(dòng)給他合并進(jìn)去。

我們打開(kāi)/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中修改:

在這里插入圖片描述

我們?cè)谧约旱囊晥D里編寫(xiě)一個(gè)jwt_response_payload_error_handler函數(shù)

def jwt_response_payload_error_handler(serializer, request = None):
  return {
    "msg": "用戶(hù)名或者密碼錯(cuò)誤",
    "status": 400,
    "detail": serializer.errors
  }

最后我們?cè)谖覀冺?xiàng)目的settings.pyJWT中添加錯(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',
}

最后的樣子就成為這樣:

在這里插入圖片描述

到此這篇關(guān)于自定義Django_rest_framework_jwt登陸錯(cuò)誤返回的解決的文章就介紹到這了,更多相關(guān)Django_rest_framework_jwt登陸錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

铁力市| 贺州市| 林西县| 丰原市| 海门市| 紫金县| 皮山县| 福贡县| 共和县| 木兰县| 鄂托克旗| 吉木乃县| 佛坪县| 德昌县| 嘉祥县| 遵义县| 潍坊市| 五原县| 九寨沟县| 梧州市| 县级市| 乌兰浩特市| 宜兰市| 勐海县| 平江县| 宜黄县| 广南县| 奉贤区| 通辽市| 个旧市| 邯郸县| 龙江县| 宜黄县| 万宁市| 义马市| 西城区| 镇赉县| 江孜县| 惠安县| 镇安县| 镇原县|