RBAC許可權系統
阿新 • • 發佈:2018-12-23
通過角色管理許可權,而不是通過員工管理許可權的系統
- 先在Django專案中新建一個app專門管理許可權
告訴Django專案多了一個app
- 在新建的app下面新建表
from django.db import models
# Create your models here.
class Permission(models.Model):
title = models.CharField(max_length=32) # 這個url是做什麼的
url = models.CharField(max_length=32) # 如果能有這個許可權,就能訪問這個url,所以用url來區分許可權
class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
role = models.ManyToManyField(to='Role') # 使用者檢視職位情況比較多
# 職位表
class Role(models.Model):
title = models.CharField(max_length=32)
permissions = models.ManyToManyField( to='Permission') # 職位檢視許可權比較多
連線資料庫新建表
-
使用Django的admin來對以上的表增加資料。
首先在admin中登錄檔
效果
由於admin展示表時,只顯示第一個欄位,如需自定製一個展示的欄位
-
接下來需要對剛剛增加的使用者許可權進行設定,
由於有某個許可權就能訪問某個url,於是在Django流程中的中介軟體的process_request的方法中對請求做判斷。
Django流程如下
具體實現思路
具體程式碼分析
定義中介軟體,第一種情況在白名單中的url,可以直接通過。第二種情況是如果url在該網頁的session中的鍵的值中,也可以訪問,否則回覆沒有訪問許可權,以下是兩種情況的過程。