# 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這兩個關鍵引數,它完成以下的...