原文地址:https://docs.djangoproject.com/en/3.0/topics/auth/
Django中的用戶權限驗證
Django本身自帶了一個權限驗證系統,它可以用來處理用戶賬戶、組的權限認證和以cookie-based爲基礎的用戶會話問題。這部分的文檔解釋了該系統的默認實現是如何做到開箱即用(work out of box)的,也會告訴你如何對它進行擴展與定製,以達到讓他適合你項目需求的目標。
概述
Django的權限認證系統同時處理身份的驗證和授權的問題。簡單來說,身份驗證用來驗證用戶的身份(他是誰),然後授權決定一個通過身份驗證的用戶能夠做什麼(他能做什麼),而這裏使用到的身份驗證這個術語指代的便是這兩個東西
認證系統包括:
-
用戶賬戶
-
權限認證:用一個二進制標誌來指示一個用戶是否能夠執行某個特定任務
-
組:將標籤和權限許可用於多個用戶以實現方便管理的一個方法
-
一個可配置的密碼散列系統
-
用於登陸用戶或內容進行限制的表單或視圖工具
-
可拔插的後端系統
Django的權限驗證系統的設計目標是有非常高的通用性,而不是提供web權限驗證系統中常見的一些特性。因爲這些常見的問題的解決方案已經被一些第三方庫實現。
- 密碼強度檢查
-
登陸請求超量限制
-
針對第三方的權限驗證(如OAuth)
- 對象級權限
安裝
在Django中,權限驗證系統被綁定爲django.contrib模塊,通過import django.contrib.auth引入,在默認情況下,該系統的所需要的配置已經由django-admin startproject setting.py生成的setting.py集成,並在你的INSTALLED_APPS中對兩個事項進行了設置:
'django.contrib.auth'包含身份驗證框架的核心,以及它的默認模型
-
'django.contrib.contenttypes'是Django的內容類型系統,它可以將你的模型與權限相關聯
並且這些事項在你的中間件中也有設置:
-
SessionMiddleware管理跨請求的會話
-
AuthernticationMiddleware使用會話將用戶與請求關聯起來
有了這些設置,運行manage.py migrate這一命令爲與auth相關的模型創建必要的數據庫表,併爲安裝的應用程序中定義的任何模型創建權限