1. 程式人生 > >RBAC許可權系統

RBAC許可權系統

通過角色管理許可權,而不是通過員工管理許可權的系統

  • 先在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中的鍵的值中,也可以訪問,否則回覆沒有訪問許可權,以下是兩種情況的過程。
在這裡插入圖片描述