RBAC 基於角色的訪問控制 xadmin的使用

2022-07-11 20:45:12 字數 3615 閱讀 3948

概念

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...