概念
rabc 是基於角色的訪問控制(role-based access control)在rbac中,許可權與角色相關,使用者通過稱為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴,許可權賦予角色,而把角色又賦予使用者,這樣許可權設計很清楚,管理起來很方便。
應用
django的 auth元件 採用的認證規則就是rbac
後台許可權控制
# 後台管理中(公司內部系統):使用rbac,基於角色的訪問控制
# 前台(主站)的許可權管理:許可權,頻率,認證 控制
# rbac的表設計
-1.最初三張表
使用者表 角色表 許可權表
-2.五張表
使用者表 角色表 許可權表
使用者表和角色表是多對多,需要建立第三張表
角色表和許可權表是多對多,需要建立第三張表
-3.六張表
使用者表 角色表 許可權表
使用者表和角色表是多對多,需要建立第三張表
角色和許可權是多對多,需要建立第三張表
使用者和許可權多對多,建立第三張表 # 個別使用者需要不通過角色有許可權控制,然後又需要通過角色有許可權控制,
# 於是建了這樣的第三張表做到了解耦合
# 公司內部專案,後台管理喜歡用django,內建了rbac6表
admin.py
from django.contrib import admin
# register your models here.
from . import models
from django.contrib.auth.admin import useradmin as djangouseradmin
# 自定義user表後,admin介面管理user類
class useradmin(djangouseradmin):
# 新增使用者課操作字段
add_fieldsets = (
(none, ),
)# 展示使用者呈現的字段
list_display = ('username', 'mobile', 'is_staff', 'is_active', 'is_superuser')
admin.site.register(models.userinfo, useradmin)
admin.site.register(models.book)
建立超級使用者,進入後台管理建立組,即使用者角色
賦予使用者角色相關許可權
為使用者選定組,以獲取相關許可權
或是使用者直接與許可權建立多對多關係(好比老闆為使用者可擁有所有許可權,但同時他又是作者有作者許可權,所以需要解耦合,當執行作者許可權則通過組作者去執行,當執行老闆許可權則可直接呼叫許可權)
xadmin是django的第三方擴充套件,可是使django的admin站點使用更方便。
文件:通過如下命令安裝xadmin的最新版
-區分1.x和2.x
-1.x :pip3 install xadmin
-2.x :pip3 install git+git:
pip3 install
在配置檔案中註冊如下應用
...'xadmin',
'crispy_forms',
'reversion',
...]# 修改使用中文介面
language_code = 'zh-hans'
# 修改時區
time_zone = 'asia/shanghai'
xadmin有建立自己的資料庫模型類,需要進行資料庫遷移
python manage.py makemigrations
python manage.py migrate
在總路由中新增xadmin的路由資訊
import xadmin
xadmin.autodiscover()
# version模組自動註冊需要版本控制的 model
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
path(r'xadmin/', xadmin.site.urls)
]
建立超級使用者,登入管理介面
python manage.py createsuperuser
1)站點全域性配置
在子應用中建立adminx.py檔案。
import xadmin
class bookclass(object): # 直接繼承object
# 該錶展示的字段
list_display = ['id', 'name', 'price', 'publish']
# 按照這些字段搜尋
search_fields = ['id', 'name']
# 按哪些字段過濾
list_filter = ['is_delete']
# 可以把資料匯出成excel,json,xml格式
list_export = ('xls', 'xml', 'json')
# list_export設定為none來禁用資料匯出功能
list_export_fields = ('id', 'name', 'price')
data_charts = ,
}# -註冊
xadmin.site.register(models.book, bookclass)
2)站點model管理
xadmin可以使用的頁面樣式控制基本與django原生的admin一直。
model_icon控制選單的圖示
class bookinfoadmin(object):
model_icon = 'fa fa-gift'
xadmin.site.register(models.bookinfo, bookinfodmin)
RBAC 基於角色的訪問控制
rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...
RBAC 基於角色的訪問控制
rbac 是基於角色的訪問控制 role based access control 在 rbac 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理...
了解基於角色的訪問控制 RBAC
了解基於角色的訪問控制 1.使用者表 create table t user user id number 10 primary key,user name varchar2 30 gender number 1 birthday date,create time date default sysd...