RBAC-基於角色的訪問控制
什麼是RBAC
概念
RBAC 是基於角色的訪問控制(Role-Based Access Control )在 RBAC 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理起來很方便。
前面我們說到三大認證,比如許可權,普通使用者和管理員能夠操作的介面就不一樣,比如我們常見的視訊軟體,不開會員能看的視訊寥寥無幾,這就是許可權的應用,但是這站在公司的角度是對外的許可權,比如後臺管理對公司內使用,公司內部的許可權該如何分配?就用到了RBAC
對外許可權針對使用者:普通註冊使用者,會員,超級會員····
對內許可權公司內部:使用RBAC的許可權控制
比如公司內部有開發部、財政部、市場部、人事部、運營部、總裁辦···
這寫部門的許可權是不同的,比如人事部有招人的權力,開發部有檢視修改提交程式碼的權力···
所以通過將許可權和角色(部門)繫結,而角色又賦予使用者,所以該部門有多大的權力,部門下的員工就有什麼樣的權力···
總體而言,RBAC針對公司內部專案,後臺管理開發居多
Django的內建RBAC(六表)
圖解
許可權三表
許可權六表
表關係
django的admin自帶rbac許可權管理(表設計完成許可權管理),6張表
使用者表、組表(角色、部門)、許可權表 ---> 三張
使用者和組多對多關係,存在中間表
使用者和許可權多對多關係,存在中間表
組和許可權多對多關係,存在中間表 -----> 三張
實操
models.py
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2)
author = models.CharField(max_length=32)
# 物件描述,顯示書名
def __str__(self):
return self.name
# 表名中文解釋
class Meta:
'''
verbose_name 顧名思義 起一個複雜點的名稱,一般用來作中文解釋
verbose_name_plural 顧名思義是一個複數名稱,因中文沒有複數
但django有時又會將使用者的駝峰命名拆成單個詞,給最後的詞加複數,和使用者的本義不符,
因些加了這樣一個選項來處理尷尬 比如 Blog Articals 或是 分類管理s
'''
# verbose_name = '圖書表'
verbose_name_plural = '圖書表'
admin
from django.contrib import admin
from .models import Book
admin.site.register(Book)
登入admin操作
普通使用者只能檢視
新增到組裡,增加修改許可權
![image](https://img2022.cnblogs.com/blog/2608072/202204/2608072-20220407225423670-1053333751.png)
admin二次開發
初始樣式
admin.py
from django.contrib import admin
from .models import Book
# Register your models here.
class BookAdmin(admin.ModelAdmin):
# 設定列表可顯示的欄位
list_display = ('name', 'price', 'author')
# 設定過濾選項
list_filter = ('name', 'price')
admin.site.register(Book, BookAdmin)
二次開發後的樣式