authenticate的執行流程與重寫

2022-07-28 00:27:17 字數 1736 閱讀 8105

流程

1.authenticate呼叫的是_get_backends函式

def authenticate(request=none, **credentials):

for backend, backend_path in _get_backends(return_tuples=true):

pass

2._get_backends,預設使用全域性配置
def _get_backends(return_tuples=false):

backends =

for backend_path in settings.authentication_backends:

pass

3.global_settings.py 使用django.contrib.auth.backends下的modelbackend的類

django\conf\global_settings.py

authentication_backends = ['django.contrib.auth.backends.modelbackend']
class modelbackend:

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

pass

重寫(實現username或email登入驗證)

可以在專案的setting中重寫設定

authencication_baclends = ['users.views.custombackend',]
users下的views.py

from django.contrib.auth.backends import modelbackend

from .models import userprofile

from django.db.models import q

class custombackend(modelbackend):

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

try:

user = userprofile.objects.get(q(username=username)|q(email=username))

if user.check_password(password):

return user

except exception as e:

return none

# userprofile繼承abstractuser

當呼叫auth中的authenticate將執行上面的方法

from django.contrib.auth import authenticate

def user_login(request):

if request.method == 'post':

username = request.post.get('username')

password = request.post.get('password')

user = authenticate(username=username,password=password)

# .......

大資料執行環境的執行

1.azkaban 啟動 bin azkaban solo start.sh或絕對路徑方式執行azkaban solo start.sh指令碼 關閉 bin azkaban solo shutdown.sh 2.kafka 注意配置server.properties,此配置檔案用來配置kafka伺服...

編譯執行和解析執行的區別以及執行的速度比較?

解釋執行 由直譯器根據輸入的資料當場執行而不生成任何的目標程式.解釋執行,它解釋一句就執行一句,不形成目標程式,輸入一條命令語句,解釋程式就立即將此語句解釋成一條或幾條指令並提交硬體立即執行且將執行結果反映到終端,就能立即得到計算結果。但解釋程式執行速度很慢,例如源程式中出現迴圈,則解釋程式也重複地...

執行緒的執行

就需要使用執行緒池來進行管理。執行緒池的好處 降低重複建立執行緒的開銷 任務 runnable 基本的任務介面,run 方法沒有返回值,不能丟擲異常。callable runnable的公升級版,call 方法既有返回值,又丟擲異常。任務的執行 executor 可以執行 execute runna...