如何在你的Django網站中新增授權?


為了處理使用者資料,我們首先使用會話跟蹤資料,然後使用這些會話啟用使用者登入。允許開發者授權的 auth/auth 系統是一個術語,用於描述啟用使用者身份驗證和授權的系統。

名稱 (auth/auth) 表示處理使用者通常是一個兩步過程。

  • 檢查使用者名稱和密碼是否與使用者資料庫匹配以驗證(身份驗證)此人就是他或她聲稱的那個人。

  • 驗證(授權)使用者是否有權執行特定操作,通常是透過將使用者的許可權與一個表進行比較。

Django 的 auth/auth 系統有很多部分。所有這些部分都列在下面。

  • 使用者 - 你的使用者是註冊了你網站的人。

  • 許可權 - 這些是二進位制(是/否)標記,指示使用者是否允許執行特定任務。

  • - 一種以一般方式將標籤和許可權應用於多個使用者的機制。

  • 訊息 - 使用者排隊和檢視系統訊息的簡單方法。

  • 個人資料 - 一種向用戶物件新增自定義欄位的方法。

許可權和授權

授權檢查經過身份驗證的使用者被允許在你的網站上使用什麼。例如,你正在執行一個電子商務網站,並且擁有員工和客戶作為你的使用者角色。員工使用者和客戶使用者的許可權各不相同,為了維護這一點,使用了授權。

許可權實質上允許開發者檢查特定使用者是否有資格執行他想要執行的特定操作。這可以透過許可權和組來實現。

Django 配備了內建的許可權系統,該系統將許可權分配給特定使用者或使用者組。Django 管理員站點使用的許可權如下:

  • 具有該物件型別“檢視”或“更新”許可權的使用者可以訪問檢視物件。

  • 只有具有該專案型別“新增”許可權的使用者才能訪問“新增”表單並新增物件。

  • 具有該專案型別“更改”許可權的使用者可以訪問更改列表、“更改”表單以及更改物件的功能。

  • 只有具有該物件型別“刪除”許可權的使用者才能訪問刪除它。

可以為不同型別的物件以及特定物件例項設定許可權。這可以透過使用 has_add_permission()、has_view_permission()、has_change_permission() 和 has_delete_permission() 方法來完成。

這些方法在 ModelAdmin 類中提供,使用這些方法,可以自定義不同物件的許可權。

#set user’s groups:
Myuser.groups =group_list

#to add or remove a user from a group the following commands can be used.
Myuser.groups.add(grp1,grp2)
Myuser.groups.remove(grp1,grp2)

#To add, remove and clear all permissions the following commands can be used.
Myuser.permissions=permission_list
Myuser.permissions.add(p1,p2,p3)
Myuser.permissions.remove(p1)
Myuser.permissions.clear()

所有上述命令通常都寫在 views.py 檔案中。在這個檔案中,接收使用者輸入的資訊,並對其進行身份驗證和授權。

因此,上述程式碼應該理想地寫在專案中的 views.py 檔案中。

通常,會建立一個用於登入的應用程式和一個用於註冊的應用程式。每個應用程式都有一個 views.py 檔案。在登入和註冊過程中分別對 views.py 檔案中的使用者進行身份驗證和授權。

或者,如果你的專案有多個角色,例如客戶、員工、管理員等,那麼你將必須建立多個使用者角色。這可以透過擴充套件 models.py 檔案中的 AbstractUser 類來完成。

From django.contrib.auth.models import AbstractUser
Class User(AbstractUser):
   EMPLOYEE=1
   CUSTOMER=2
   ROLE_CHOICES=(
      (EMPLOYEE,’Employee’)
      (CUSTOMER,’Customer’)
   )
      models.PositiveSmallIntegerField(choices=ROLE_CHOICES, blank=True, null=True)

所有上述命令通常都寫在 views.py 檔案中。在這個檔案中,接收使用者輸入的資訊,並對其進行身份驗證和授權。因此,上述程式碼應該理想地寫在你的專案中的 views.py 檔案中。

Django 中的許可權

預設許可權使用django.contrib.auth提供,它列在 settings.py 檔案中的 INSTALLED_APPS 中。這將預設確保向專案中的所有模型授予新增、檢視、更新和刪除許可權。

例如,你正在執行一個電子商務網站,你的網站的使用者包括客戶和員工,一個名為 review 的應用程式和一個名為 product 的模型。要檢查使用者是否具有關於該模型的許可權,可以使用以下程式碼行。

User.has_perm(‘review.add_product’)
User.has_perm(‘review.remove_product’)
User.has_perm(‘review.delete_product’)
User.has_perm(‘review.view_product’)

為了檢查使用者是否具有特定許可權,而不是單獨檢查所有許可權,也可以使用以下方法:

From django.contrib.auth.decorators import permission_required
@permission_required(‘review.add_product’)
Def fun(request):
   ‘’’can raise error stating that permission is denied.’’’

或者

{% if perms.review.add_product %}

上面的程式碼行也可以用來檢查使用者是否具有許可權。透過這種方式,可以在 Django 專案中實現授權。

更新於:2022年9月5日

769 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.