如何在Django網站中新增身份驗證?
在Web應用程式中,資料管理有兩個關鍵要素。首先是從多個瀏覽器查詢中儲存獲取的資料;其次是使用這些儲存的資料來驗證使用者身份。會話允許我們跟蹤跨多個瀏覽器查詢的資料。等式的第二部分是使用這些會話登入使用者。
我們不能相信人們就是他們聲稱的那個人,所以我們必須在過程中驗證他們的身份。當然,Django包含執行這些和其他典型任務的工具。Django的使用者身份驗證系統管理使用者帳戶、組、許可權和基於cookie的使用者會話。身份驗證/授權(auth/auth)系統是用於描述此係統的術語。
名稱(auth/auth)表明處理使用者通常是一個兩步過程。
針對使用者資料庫檢查使用者名稱和密碼,以驗證(身份驗證)此人就是他或她聲稱的那個人。
驗證(授權)使用者是否有權執行特定操作,通常是透過將使用者的許可權與表進行比較。
Django的auth/auth系統包含許多部分。所有這些部分都如下所示。
使用者 - 您的使用者是已註冊您網站的人。
許可權 - 這些是二進位制(是/否)標記,指示使用者是否允許執行特定任務。
組 - 一種以通用方式將標籤和許可權應用於多個使用者的機制。
訊息 - 使用者排隊和檢視系統訊息的簡單方法。
個人資料 - 一種向用戶物件新增自定義欄位的方法。
Django身份驗證將身份驗證和授權組合到一個包中,稱為身份驗證系統,因為這些功能在某種程度上是相互關聯的。
身份驗證支援包含在django.contrib中,作為一個必須安裝的Django應用程式。它預設情況下已安裝,但如果您已解除安裝它,則需要使用以下步驟重新安裝它。
驗證會話框架是否已就位。當然,跟蹤使用者需要使用cookie,這就是使用會話框架的原因。
將'django.contrib.auth'新增到您的INSTALLED_APPS配置後,執行manage.py syncdb。
確保'django.contrib.auth.middleware.AuthenticationMiddleware'位於您的MIDDLEWARE_CLASSES設定中,位於SessionMiddleware之後。
驗證使用者
django.contrib.auth是一個提供身份驗證功能的Django contrib模組。
必要的設定預設包含在django-admin startproject生成的settings.py檔案中。
您的INSTALLED_APPS設定中包含以下兩項:
'django.contrib.auth'中包含身份驗證框架的核心和預設模型。
'django.contrib.contenttypes'稱為Django內容型別系統,它允許您將許可權與您開發的模型關聯。
以及您的MIDDLEWARE配置中的以下專案:
SessionMiddleware是一個跨請求管理會話的中介軟體。
AuthenticationMiddleware使用會話將使用者與請求關聯。
在這些設定就位的情況下執行命令manage.py migrate將為auth相關模型提供相應的資料庫表,併為已安裝應用程式中配置的任何模型提供許可權。
Authenticate() 方法
我們可以使用authenticate()方法來驗證一組憑據。它接收使用者名稱和密碼,並針對每個憑據進行身份驗證檢查。如果提供的憑據對後端有效,則返回使用者物件。如果不是,則引發PermissionDenied錯誤,並返回None。
from django.contrib.auth import authenticate user=authenticate(username=’john’,password=’passwordjohn’) if user is not None: #backend has authenticated the given data else: #no backend has authenticated the given data
上面提供的方法是一種低階身份驗證方法。
下面可以看到登入期間使用者輸入資料身份驗證的示例。
def login(request): if request.method == 'POST': name = request.POST['name'] password = request.POST['password'] user = auth.authenticate(username=name,password=password) if user is not None: auth.login(request,user) messages.info(request,'You Have Successfully LogedIn') return redirect('/') else: messages.info(request,'Invalid Details') return redirect('login') else: return render(request, 'login.html')
透過這種方式,可以對使用者輸入的資料執行身份驗證。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP