要做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 大型計...