許可權設計系統 RBAC

2021-10-24 01:19:41 字數 1933 閱讀 7169

​ 許可權系統是針對與使用者設計,不同的使用者進入擁有不同的身份,而不同的身份則會導致他們能夠使用到系統中的功能出現不同。這些功能即需要前端展示時的控制,也需要後端許可權的校驗。

​ rbac(role-based access control)是一套很成熟的許可權設計模型。是乙個基於角色所控制的系統,所謂角色,就是使用者的身份,整個模型圍繞著角色設計。

​ 一種常見的許可權設計模型如下圖:

​ 將使用者和所對應的許可權直接關聯,這種將使用者和許可權直接關聯的方式看起來很直接。乙個使用者可以擁有多個許可權,而這些許可權的資訊都儲存在使用者許可權表中,在小規模系統,或者說使用者較少時比較便於管理,逐個使用者授權,人說較多時,就顯得有些麻煩,大部分的使用者可能都是擁有者同樣的許可權,重複性極高。這個時候既可以引入角色。

​ 每乙個普通員工有用的許可權一定是一樣的,部門管理者在許可權上可能存在差異,而這一部分人往往是少數。設計以角色為核心的許可權系統,可以減少資料庫開銷的同時,減少使用者的重複工作,這對於使用者是很友好的。rbac的設計模型如下圖:

​ 部門表主要是用來存放部門的基本資訊。

字段備註

dept_id

部門編號

dept_name

部門名稱

pid部門父id

​ 使用者表主要用來存放使用者的基本資訊。

字段備註

user_id

使用者編號

username

使用者名稱password

密碼dept_id

所在部門編號

​ 角色表主要用來存放角色的基本資訊。

字段備註

role_id

角色編號

role_name

角色名稱

​ 許可權表是用來存系統中包含的許可權資訊的。

字段備註

per_id

許可權編號

per_name

許可權名稱

per_nation

許可權的識別符號

​ 使用者角色表是用來存放使用者和角色的對應關係,理論上來說,使用者和角色應該是一對一的,但是,在實際的生產環境中,乙個使用者往往有多個角色,即兼任。

字段備註

user_id

使用者編號

role_id

角色編號

​ 角色許可權表是用來存放角色和許可權的對應關係,該表中,角色和許可權應該是一對多的關係。

字段備註

role_id

角色編號

per_id

許可權編號

​ 當然,乙個許可權系統一定不能只有已上幾張表,為了實現選單的動態化,需要補充三張表,補充後的結構如下:

​ 選單表是用來存放選單的基本資訊。

字段備註

menu_id

選單編號

menu_name

選單名稱

url選單所指向的位址

type

選單的型別(包括目錄、選單以及按鈕)

icon

選單的圖表

pid選單的父id

​ 角色選單表是用來存放角色所擁有的的選單。

字段備註

role_id

角色編號

menu_id

選單編號

​ 選單許可權表用來存放選單的許可權。為了能夠控制選單的動態顯示、訪問,所以給每乙個選單也設計了許可權,這樣看起來有些臃腫,一種簡化方式是將選單許可權表省略,然後在選單表中新增permission字段,代表改選單所需要的的許可權。

字段備註

menu_id

選單編號

per_id

許可權編號

RBAC許可權系統設計

最近看了很多關於許可權管理系統的產品設計的文章 rbac模型,role based access control 基於角色的訪問控制 總結下自己認識的許可權系統。一 rbac模型解釋 先來look下圖,圖意 通過角色關聯使用者,角色關聯許可權的方式間接賦予使用者各種許可權。使用者 指使用此系統的所有...

RBAC許可權設計

rbac role based access control,基於角色的訪問控制 就是使用者通過角色與許可權進行關聯。簡單地說,乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成 使用者 角色 許可權 的授權模型。在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。...

RBAC許可權設計

rbac 模型作為目前最為廣泛受的許可權模型 角色訪問控制 rbac 引入了role的概念,目的是為了隔離user 即動作主體,subject 與privilege 許可權,表示對resource的乙個操作,即operation resource role作為乙個使用者 user 與許可權 priv...