系統許可權控制的見解

2021-07-09 07:46:51 字數 1939 閱讀 4200

在許多的實際應用中,不只是要求使用者簡單地進行註冊登入,還要求不同類別的使用者對資源有不同的操作許可權。目前,許可權管理系統也是重複開發率最高的模組之一。

許可權控制應該是分為3類:

1. 選單級別

2. 頁面元素級別

3. 資料級別

目前好像用的比較多的是基於rbac的,我經常用的也就是控制到選單級別,對於控制頁面元素和資料級別用的不是很多,目前需要解決許可權控制到頁面元素級別,網上看了很多但是不是很明白。不知大家有什麼好的解決方案沒有。大家的表都是怎樣設計的?希望高手們不吝指點,有什麼好的方案讓借鑑借鑑。

我的目前表主要就包括5張:

使用者表;角色表;選單表(包括一級選單、二級選單) ;使用者和角色的關聯表(使用者角色多對多);角色和選單的關聯表等。

rbac(基於角色的訪問控制)

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

可以理解為一定數量的許可權的集合,許可權的載體。例如:乙個論壇系統,「超級管理員」、「版主」都是角色。版主可管理版內的帖子、可管理版內的使用者等,這些是許可權。要給某個使用者授予這些許可權,不需要直接將許可權授予使用者,可將「版主」這個角色賦予該使用者。

當使用者的數量非常大時,要給系統每個使用者逐一授權(授角色),是件非常煩瑣的事情。這時,就需要給使用者分組,每個使用者組內有多個使用者。除了可給使用者授權外,還可以給使用者組授權。這樣一來,使用者擁有的所有許可權,就是使用者個人擁有的許可權與該使用者所在使用者組擁有的許可權之和。(下圖為使用者組、使用者與角色三者的關聯關係)

在應用系統中,許可權表現成什麼?對功能模組的操作,對上傳檔案的刪改,選單的訪問,甚至頁面上某個按鈕、某個的可見性控制,都可屬於許可權的範疇。有些許可權設計,會把功能操作作為一類,而把檔案、選單、頁面元素等作為另一類,這樣構成「使用者-角色-許可權-資源」的授權模型。而在做資料表建模時,可把功能操作和資源統一管理,也就是都直接與許可權表進行關聯,這樣可能更具便捷性和易擴充套件性。(見下圖)

請留意許可權表中有一列「許可權型別」,我們根據它的取值來區分是哪一類許可權,如「menu」表示選單的訪問許可權、「operation」表示功能模組的操作許可權、「file」表示檔案的修改許可權、「element」表示頁面元素的可見性控制等。

這樣設計的好處有二。其一,不需要區分哪些是許可權操作,哪些是資源,(實際上,有時候也不好區分,如選單,把它理解為資源呢還是功能模組許可權呢?)。其二,方便擴充套件,當系統要對新的東西進行許可權控制時,我只需要建立乙個新的關聯表「許可權xx關聯表」,並確定這類許可權的許可權型別字串。

這裡要注意的是,許可權表與許可權選單關聯表、許可權選單關聯表與選單表都是一對一的關係。(檔案、頁面許可權點、功能操作等同理)。也就是每新增乙個選單,就得同時往這三個表中各插入一條記錄。這樣,可以不需要許可權選單關聯表,讓許可權表與選單表直接關聯,此時,須在許可權表中新增一列用來儲存選單的id,許可權表通過「許可權型別」和這個id來區分是種型別下的哪條記錄。

到這裡,rbac許可權模型的擴充套件模型的完整設計圖如下:

隨著系統的日益龐大,為了方便管理,可引入角色組對角色進行分類管理,跟使用者組不同,角色組不參與授權。例如:某電網系統的許可權管理模組中,角色就是掛在區局下,而區局在這裡可當作角色組,它不參於許可權分配。另外,為方便上面各主表自身的管理與查詢,可採用樹型結構,如選單樹、功能樹等,當然這些可不需要參於許可權分配。

以上,是從基本的rbac模型進行了擴充套件,具體的設計要根據專案業務的需要作調整。

本文參考:

管理系統的前端許可權控制

問題 專案使用的是shiro框架處理使用者登入許可權,那麼前端要如何配合後端完成系統的許可權控制?前端許可權比較常見的就是rbac基於角色的訪問控制,基本思想是系統的操作許可權不是直接授予具體的使用者,而是在使用者與許可權之間,建立角色集合,每個角色對應一組相應的許可權,一旦使用者被賦予某種角色,那...

大話系統之許可權控制

許可權系統是乙個完善專案的基石,許可權控制可以分為兩部分內容 功能許可權控制和資料許可權控制。介紹許可權控制,必須了解什麼是rbac,rbac 模型是目前最為廣泛接受的許可權模型。下面介紹一下rbac的基本知識。如果企業的應用比較多,可以把這些控制內容放到乙個獨立的許可權控制系統中,提供相應的許可權...

RBAC許可權控制系統

1 概述 rbac role based access control 基於角色的訪問控制。rbac的許可權控制可以抽象概括為 判斷 who是否可以對what進行how的訪問操作 operator 這個邏輯表示式的值是否為true的求解過程。即將許可權問題轉換為who what how的問題。who...