首頁 > 軟體

如何使用Django預設的Auth許可權管理系統

2023-02-14 06:02:02

1.Django預設已經提供了認證系統Auth模組。

認證系統包含:

  • 使用者管理
  • 許可權
  • 使用者組
  • 密碼雜湊系統
  • 使用者登入或內容顯示的表單和檢視
  • 一個可插拔的後臺系統 admin

Django預設使用者的認證機制依賴Session機制,我們在專案中將引入JWT認證機制,將使用者的身份憑據存放在Token中,然後對接Django的認證系統,幫助我們來實現:

  • 使用者的資料模型
  • 使用者密碼的加密與驗證
  • 使用者的許可權系統

auth存在的位置 External Librariessite-packagesdjangocontrib..其中包括auth模組和admin模組.

2.Django使用者模型

Django認證系統中提供了使用者模型類User儲存使用者的資料,模型儲存位置:D:anacondaLibsite-packagesdjangocontribauthmodels.py,預設的User包含以下常見的基本欄位:

欄位名欄位描述
username必選。150個字元以內。 使用者名稱可能包含字母數位,_@+ .-個字元。
first_name可選(blank=True)。 少於等於30個字元。
last_name可選(blank=True)。 少於等於30個字元。
email可選(blank=True)。 郵箱地址。
password必選。 密碼的雜湊加密串。 (Django 不儲存原始密碼)。 原始密碼可以無限長而且可以包含任意字元。
groupsGroup 之間的多對多關係。
user_permissionsPermission 之間的多對多關係。
is_staff布林值。 設定使用者是否可以存取Admin 站點。
is_active布林值。 指示使用者的賬號是否啟用。 它不是用來控制使用者是否能夠登入,而是描述一種帳號的使用狀態。
is_superuser是否是超級使用者。超級使用者具有所有許可權。
last_login使用者最後一次登入的時間。
date_joined賬戶建立的時間。 當賬號建立時,預設設定為當前的date/time。

常用方法:

  • set_password(raw_password)

設定使用者的密碼為給定的原始字串,並負責密碼的。 不會儲存User 物件。當Noneraw_password 時,密碼將設定為一個不可用的密碼。

  • check_password(raw_password)

如果給定的raw_password是使用者的真實密碼,則返回True,可以在校驗使用者密碼時使用。

管理器方法:

管理器方法即可以通過User.objects. 進行呼叫的方法。

  • create_user(username, email=None, password=None, **extra_fields)

建立、儲存並返回一個User物件。

  • create_superuser(username, email, password, **extra_fields)

create_user() 相同,但是設定is_staffis_superuserTrue

3.自定義User物件

因為系統預設自帶的user物件很多屬性和功能並不是我自己需要的,所以需要我們自己重新定義一個user物件.

第一步:建立一個user app

python manage.py startapp user

建立自定義user物件models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class user(AbstractUser):
    # 宣告自定義user物件
    mobile=models.CharField(max_length=11,unique=True,verbose_name="手機號碼")
    avatar=models.ImageField(upload_to="avatar",verbose_name="使用者頭像")

    class Mata:
        db_table="user"
        verbose_name="使用者資訊"
        verbose_name_plural=verbose_name

第二步:設定相關資訊

進入主app下面的setting檔案中

註冊userapp

註冊自定義模型

第三步:執行資料遷移

注意事項:如果是在第一次資料遷移之後,猜設定的AUTH_USER_MODEL自定義模型則會報錯,解決方法如下:

  • 先把現有的資料庫匯出備份,然後清掉資料庫中所有的資料表。
  • 把開發者建立的所有子應用下面的migrations目錄下除了__init__.py以外的所有遷移檔案,只要涉及到使用者的,一律刪除
  • 把django.contrib.admin.migrations目錄下除了__init__.py以外的所有遷移檔案,全部刪除。
  • 把django.contrib.auth.migrations目錄下除了__init__.py以外的所有遷移檔案,全部刪除。
  • 把reversion.migrations目錄下除了__init__.py以外的所有遷移檔案,全部刪除。
  • 把xadmin.migrations目錄下除了__init__.py以外的所有遷移檔案,全部刪除。
  • 接下來,執行資料遷移,回顧第0步中的資料,以後如果要修改使用者相關資料,不需要重複本次操作,直接資料遷移即可。

刪除表

刪除user.migrations目錄下除了__init__.py以外的所有遷移檔案,只要涉及到使用者的,一律刪除

django.contrib.admin.migrations,django.contrib.auth.migrations,reversion.migrations,xadmin.migrations目錄下除了__init__.py以外的所有遷移檔案,全部刪除

* 執行資料遷移
在terminal中執行:

python manage.py makemigrations
python manage.py migrate

到此這篇關於如何使用Django預設的Auth許可權管理系統的文章就介紹到這了,更多相關Django Auth許可權管理系統內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com