自定義登入驗證後端,實現賬號和手機號都登入

2021-08-21 03:40:54 字數 950 閱讀 5380

# coding=utf-8

from django.contrib.auth.backends import modelbackend

import re

from users.models import user

def jwt_response_payload_handler(token, user=none, request=none):

"""自定義jwt認證成功返回資料

"""return

def get_user_by_account(account):

'''根據使用者輸入的賬號查詢user'''

try:

if re.match(r'^1[3-9]\d$', account):

# 手機號登入

user = user.objects.get(mobile=account)

else:

# 使用者名稱登入

user = user.objects.get(username=account)

except user.doesnotexist:

return none

else:

return user

class usernamemobileauthbackend(modelbackend):

'''自定義登入驗證後端,實現賬號和手機號都登入'''

def authenticate(self, request, username=none, password=none, **kwargs):

# 使用賬號查詢user物件

user = get_user_by_account(username)

# 若果user存在,使用user校驗密碼,如果密碼校驗通過,響應user

if user and user.check_password(password):

return user

django 自定義登入驗證邏輯

本文的django view採用的是基於cbv的模式 django中的登入功能主要涉及到django.contrib.auth這個包,它提供了2個重要的函式 authenticate和login。這個函式接受的乙個收集引數,但至少需要接受username和password這兩個關鍵引數,它完成以下的...

Django自定義登入驗證類

1.首先在views檢視函式內引入 from django.contrib.auth import authenticate from django.contrib.auth.backends import modelbackend q表示查詢條件 from django.db.models imp...

django 自定義登入驗證邏輯

本文的django view採用的是基於cbv的模式 django中的登入功能主要涉及到django.contrib.auth這個包,它提供了2個重要的函式 authenticate和login。這個函式接受的乙個收集引數,但至少需要接受username和password這兩個關鍵引數,它完成以下的...