Djanog中的權限是通過auth組件來實現的,在Djanog默認注冊的app中,auth就是了
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"app01.apps.App01Config"
]
1.用戶的創建
方式一:通過命令
python .\manage.py createsuperuser

方式二:通過視圖函數
auth中有models文件,里面定義了User的模型類,通過繼承關系,最終還是繼承了Model模型類,里面定義了很多的字段,

最后數據庫遷移,生成表auth_user

所以我們在視圖函數中,可以像操作其他模型類一樣,進行數據的增刪改查,如下
from django.contrib.auth import models
def add_user(request):
models.User.objects.create_user(username="victor")
2.權限的生成
當我們在執行python .\manage.py migrate 時,Djanog通過信號的方式,向auth_permissions表中添加權限
首先我們在執行上述命令后,會生成auth_permissions表,同時會有數據

這些數據是Django自動生成的,下面我們來看一下源碼

當auth app被加載的時候,會執行ready函數,這里面會注冊migrate命令的信號,關于信號可以在我之前寫的信號一篇的查看

3.權限的分配
權限的分配,我們可以登錄admin之后進行手動的錄入,如下

我們可以給用戶User之間分配權限,User和權限之間是多對多的關系,所以,Djanog還會生成一個auth_user_permissions的表格,如下

當然我們也可以先將權限分配給組,然后將用戶劃分到組中,所以還有有group表和group_permissions表格,如下

4.權限的驗證
當一個用戶,訪問沒有授權的路由時,就會出現403禁止
觀看源碼,我們在請求路由的時候,請求會走到對應的視圖中,然后在視圖中來判斷該用戶是否有對應的權限,其本質就是去對應的表中查詢該用戶是否有權限

浙公網安備 33010602011771號