也曬曬我的RBAC系統(一) 概述

2022-01-13 13:01:57 字數 2591 閱讀 3588

要做rbac,首先需要確定需求。開始是根據幾個專案來考慮它們的共同點,看涉及到使用者管理、許可權驗證的部分,那些是幾個專案都需要實現的,哪些是某個專案所特有的,慢慢確立了rbac的需求,決定了它要實現什麼功能。

開始時,只想將專案從資料庫建模開始,往上做到bll這一層,然後其它專案可以使用此bll,處理rbac方面的工作,就相當於把幾個專案的rbac部分共享一樣。

後來感覺如果只做到這一層的話,以後復用的話,工作量還是會很大。所以決定將後台管理部分的ui層也做出來。這樣就相當於幾個專案連介面部分也可以共享了。

然而在實際過程中,覺得即使做出了後台管理的ui。其它專案使用這個模組也會比較費事。而且這種模式,專案對rbac的呼叫與呼叫專案內模組沒什麼區別。使用者在使用rbac專案時還是需要了解其內部的一些操作方法,耦合度太高,沒有實現封裝。

後來有了進一步的想法,能不能將其做成乙個框架。雖然水平有限,說框架有些大,而且也不見得能做完美,但目標還是可以定得高一點麼。

既然想做成框架,那就不是提供乙個資料庫模型,並完成相關的**就了事的。我的想法就是,能夠讓使用者在用指令碼建立建立資料庫,複製ui介面檔案到專案資料夾,並引用dll後,無需再進行其它的配置工作,就能直接使用這套框架。使用者自己程式設計進行rbac操作時,只要一兩個類就可以完成所有工作,對使用者隱藏所有細節。

基於這種想法,我開始進行專案的建設,現在已經建立了下面幾部分:

(1)bll:業務邏輯層。

用於處理業務邏輯相關的工作,此層內容僅對rbac專案內的成員開發,不提供對外呼叫。

(2)classfactory:類工廠。

當前僅支援資料訪問層物件的建立。以後視需要增加新的工廠。

(3)demo for winform:c/s模式介面模板

提供windows程式的介面檔案與操作**,如果不想自己設計介面,可以直接使用此現成的介面檔案。

(4)demo for webform:b/s模式介面模板

提供web專案的介面檔案與操作**。如果不想自己設計web介面,可以直接使用此介面。否則只要製作新的css檔案,替換原有css檔案,即可實現自己的介面。

(5)idal:資料庫訪問層介面定義

沒什麼好說的

(6)model:實體類

同樣(7)oracledal:oracle 資料庫訪問層

支援oracle資料庫,這個準備先放一放,oracle程式設計太不爽了

(8)privilege config tools:許可權配置工具

windows程式,其它專案在使用此框架時,需要生成自己的的許可權檔案。這個工具就是用來做這件事情的。

(9)rbac manager:rabc管理類

這個是對外服務的部分,其它專案只要直接引用此dll,即可進行涉及到rbac的各種操作。

(10)sqlserverdal:sql server 資料庫訪問層

支援sql server資料庫。也沒什麼好說的。

現在大家可以看出來了,作為終端使用者,如果在專案中使用這個框架的話,那麼他所要關心的只是rbac manger這乙個namespace下的類的使用,而無需關住rbac的細節。

專案元件說完了,再來介紹一下資料庫建模

說明一下,為了保證大家都能看清楚,所以我把存得大了些,右邊的幾個表看不見,大家費點事另存到桌面上再看吧。        

資料庫建模圖:

說一下各表的用途

所有表均以ksrbac開頭,避免與其它專案表重名。

(1)使用者部分

ksrbac_users:使用者基本表。此表僅儲存最少量的使用者資訊,用於使用者登陸、許可權認證等常見的工作。

ksrbac_usermembership:使用者許可權表。此表用來儲存涉及到許可權系統工作的想關資訊。

ksrbac_userdetail:使用者基本資訊表。用於儲存使用者的日常資訊。只在檢視使用者資料時需要呼叫。

其實這個三表的內容完全可以放到一張表中,但感覺分到三個表裡,在程式設計上會清晰一些。這裡可能有不合理的地方,還望大家指正。      

(2)許可權部分

ksrbac_resourcegroups:資源分組。用於將同類資源進行分組,以方便管理,支援多級分類。

ksrbac_resources:資源。記錄具體的資源物件。

ksrbac_operations:操作。記錄具體的操作方法。

ksrbac_privileges:許可權表。通過結成「資源-操作」對,來實現許可權的定製。

(3)角色部分

ksrbac_roles:角色表。儲存所有角色。

ksrbac_privilegeinroles:使用者表,用於儲存與身份驗證有關的資訊

ksrbac_usersinroles:使用者所屬角色表。通過此表來設定使用者具有那個角色的許可權。

(4)分組部分

ksrbac_groups:分組表。儲存分組相關資訊

ksrbac_groupsingroups:組屬組表。設定分組所屬的分組。

ksrbac_groupestates:組狀態型別表。

ksrbac_usersingroups:組屬使用者表。設定使用者所屬組。

ksrbac_useringroupestates:組使用者狀態型別表。用於記錄組中使用者的狀態。

作業系統(一)概述

學習資料 作業系統 清華大學出版社 2012 一 功能 1.管理系統的各個部件,使它們能夠正常運轉 2.給上層的應用軟體提供乙個易於理解和程式設計的介面 二 角色 對於作業系統的設計者,作業系統是系統資源的管理者 如何管理cpu 記憶體 i o裝置等系統部件 對於應用程式開發人員,作業系統是一組抽象...

作業系統(一) 概述

作業系統是緊貼硬體之上,所有其他軟體之下 是其它軟體的環境 用來管理硬體 使cpu i o裝置和儲存空間能夠有效利用,管理分配軟硬體資源,合理組織計算機工作流程 作業管理,程序管理 實現使用者介面 彌補硬體系統的型別和數量的差別 將覆蓋了軟體的機器稱為擴充機器或虛擬機器,因此,os是擴充套件機 虛擬...

嵌入式系統(一)概述

二 嵌入式系統晶元 三 嵌入式系統硬體和軟體系統基本組成 以應用為中心,計算機技術為基礎,軟硬體可裁剪,適用應用系統對功能等方面有嚴格要求的專用計算機系統。1 為了某些特殊應用,可以對軟硬體構成就行不斷的調整。把數字計算機系統分成通用計算機和嵌入式系統兩大類。通用計算機是指如微型計算機 pc 大型計...