Django實戰(23) 許可權控制

2021-09-06 04:55:24 字數 771 閱讀 1032

我們這裡實現最簡單的控制,非登入使用者禁止訪問產品管理介面。在django裡面,只需要在相應的檢視函式前面增加@login_required修飾符即可:

from django.contrib.auth.decorators import login_required ... ... @login_required def list_product(request): list_items = product.objects.all() ... ...

login_required實現了如下功能:

如果使用者沒有登入, 重定向到/accounts/login/,並且把當前絕對url作為next引數用get方法傳遞過去;

如果使用者已經登入, 正常地執行檢視函式。

這樣我們例子中需要的功能就實現了。但是這充其量是「登入限制」,而更常見的需求是「訪問控制」,即區分已經登入的使用者,對不同的檢視有不同的訪問許可權。因為我們的例子中沒有涉及到,所以只把相關的做法簡單例舉在下面。

1.訪問控制功能通過django的 request.user.has_perm() 來實現,該函式返回true或false,表示該使用者是否有許可權。而許可權是auth 應用中定義的permission型別;user與permission是many-to-many的關係。

2. django還提供了乙個@permission_required修飾符,來限定view函式只有在user具有相應許可權的情況下才能被訪問。

3. django對於每個模型類,自動增加add、change、delete三種許可權,以便於許可權控制。當然你也可以設定自己的許可權。

Django實戰(23) 許可權控制

我們這裡實現最簡單的控制,非登入使用者禁止訪問產品管理介面。在django裡面,只需要在相應的檢視函式前面增加 login required修飾符即可 login required實現了如下功能 如果使用者沒有登入,重定向到 accounts login 並且把當前絕對url作為next引數用get...

django 通過url實現簡單的許可權控制

根據使用者許可權設定使用者可以訪問哪些頁面,用django實現乙個簡單的demo。class level models.model l name models.charfield max length 50,verbose name 等級名稱 l permission models.onetoone...

django後台許可權管理(基於角色控制管理)

元件原始碼 使用自定義rbac許可權元件 1.拷貝rbac元件 2.清空migration目錄 3.在setting註冊rbac python rbac django 2.0以上 4.資料庫遷移錄入資訊 5.建立超級管理,新增許可權資訊 元件admin.py已經定製化 6.使用者登入後做許可權和選單...