專利名稱:一種基于rbac模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控 制方法和系統(tǒng)。
背景技術(shù):
企業(yè)應(yīng)用系統(tǒng)建設(shè)都涉及權(quán)限管理一種是功能操作權(quán)限,一種是數(shù)據(jù)操作權(quán)限。 其中,功能權(quán)限可以理解為能做什么的問題,如增加銷售訂單。數(shù)據(jù)權(quán)限可以理解為能 在哪里干什么的問題,如察看北京分公司海淀銷售部張三的銷售訂單。
對(duì)于權(quán)限控制,現(xiàn)在基本上均基于RBAC (ROLE-BASED ACCESSC0NTR0L,基于角色訪 問控制)模型構(gòu)建權(quán)限控制系統(tǒng)。參照?qǐng)D1,其為RBAC的核心模型。在RBAC中,權(quán)限與角 色相關(guān)聯(lián),用戶通過成為適當(dāng)角色的成員而得到這些角色的權(quán)限。這就極大地簡化了權(quán)限 的管理。在一個(gè)組織中,角色是為了完成各種工作而創(chuàng)造,用戶則依據(jù)它的責(zé)任和資格來被 指派相應(yīng)的角色,用戶可以很容易地從一個(gè)角色被指派到另一個(gè)角色。
現(xiàn)有技術(shù)中,基于RBAC模型的權(quán)限控制系統(tǒng)已經(jīng)實(shí)現(xiàn)功能操作方面的權(quán)限控制, 而對(duì)于數(shù)據(jù)操作權(quán)限沒有控制或者采用硬編碼方式,局限性比較大,靈活度不夠。比如對(duì)于 電信行業(yè)、廣電行業(yè)等行業(yè)的運(yùn)營商的在對(duì)客戶資料信息、敏感的財(cái)務(wù)數(shù)據(jù)等信息的數(shù)據(jù) 權(quán)限訪問控制方面,運(yùn)營商已經(jīng)不僅僅局限于功能操作權(quán)限的訪問控制,更多的數(shù)據(jù)權(quán)限 的訪問控制。
如,現(xiàn)有技術(shù)中,由于針對(duì)一資源的數(shù)據(jù)權(quán)限是根據(jù)具體的業(yè)務(wù)定制的,即由業(yè) 務(wù)人員確定哪些用戶對(duì)應(yīng)哪些角色,這些角色擁有哪些數(shù)據(jù)權(quán)限,然后業(yè)務(wù)人員將其針對(duì) 所述資源的上述需求告訴開發(fā)人員進(jìn)行編碼,開發(fā)人員即根據(jù)需求在針對(duì)所述資源的訪問 類中,將驗(yàn)證邏輯及需求的屬性硬編碼在該類中,那么該種思路及操作過程,針對(duì)所述資源 的業(yè)務(wù)類型變更,則需要業(yè)務(wù)人員提供數(shù)據(jù)權(quán)限的需求關(guān)系給開發(fā)人員重新進(jìn)行編碼,導(dǎo) 致代碼冗余量大,并且系統(tǒng)局限也比較大,不能靈活的適應(yīng)各種不斷變化的業(yè)務(wù)需求。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法 和系統(tǒng),解決現(xiàn)有技術(shù)中在原系統(tǒng)架構(gòu)情況下,變更數(shù)據(jù)權(quán)限時(shí)代碼冗余量大,并且數(shù)據(jù)權(quán) 限控制不靈活,系統(tǒng)局限也比較大,不能靈活的適應(yīng)各種不斷變化的業(yè)務(wù)需求的問題。
為了解決上述問題,本發(fā)明公開了一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法, 包括
配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng)關(guān)系;配 置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求;
基于上述配置,數(shù)據(jù)權(quán)限的控制過程包括
當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí),通過資源類對(duì)應(yīng) 的切面類攔截所述訪問請(qǐng)求;
所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象的屬性信息賦值 給資源類的第一對(duì)象;
所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。
優(yōu)選的,所述切面類根據(jù)所述資對(duì)應(yīng)的屬性信息,提取用戶對(duì)象的屬性信息賦值 給資源類的第一對(duì)象包括
所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶對(duì)象的SESSION 中是否存在所述屬性信息;
如果存在,則從所述SESSION中提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì) 象;
如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中,提取所述 需求的屬性信息中缺少的屬性信息寫入所述SESSION中,再從SESSION中將所述需求的屬 性信息賦值給資源類的對(duì)象。
優(yōu)選的,所述配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所 述資源類的訪問請(qǐng)求包括
在SPRING框架的XML配置文件中定義各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系;所述切 面類用于攔截訪問所述資源類的訪問請(qǐng)求;
和/ 或,
采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截 訪問所述資源類的訪問請(qǐng)求。
優(yōu)選的,所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果 集包括
所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL語句執(zhí) 行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根據(jù)屬性信息確定查詢條件 并進(jìn)行查詢。
優(yōu)選的,所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL 語句時(shí)還包括
將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限的各屬性信息進(jìn) 行標(biāo)記;
進(jìn)一步的,所述執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集之后還包括
當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述用戶對(duì)象所在終端;
當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù)據(jù)結(jié)果集是否根據(jù) 屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是,則生成所述用戶對(duì)象沒有相應(yīng)權(quán)限的提示 信息返回給所述用戶對(duì)象所在終端。
相應(yīng)的,本發(fā)明還公開了一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制系統(tǒng),包括
配置模塊,用于配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間 的對(duì)應(yīng)關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類 的訪問請(qǐng)求;
攔截模塊,用于當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí), 通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求;
賦值模塊,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象 的屬性信息賦值給資源類的第一對(duì)象;
數(shù)據(jù)獲取模塊,用于所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲 取數(shù)據(jù)結(jié)果集。
優(yōu)選的,所述賦值模塊包括
判斷模塊,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶 對(duì)象的SESSION中是否存在所述屬性信息;
第一賦值模塊,用于如果存在,則從所述SESSION中提取用戶對(duì)象的屬性信息賦 值給資源類的第一對(duì)象;
第二賦值模塊,用于如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性 信息表中,提取所述需求的屬性信息中缺少的屬性信息寫入所述SESSION中,再從SESSION 中將所述需求的屬性信息賦值給資源類的對(duì)象。
優(yōu)選的,所述配置模塊包括
第一配置模塊,用于在SPRING框架的XML配置文件中定義各資源類與相應(yīng)切面類 的對(duì)應(yīng)關(guān)系;所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求;
和/ 或,
第二配置模塊,用于采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系, 所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求。
優(yōu)選的,所述數(shù)據(jù)獲取模塊包括
第一數(shù)據(jù)獲取模塊,用于所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資 源類中的動(dòng)態(tài)SQL語句執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根 據(jù)屬性信息確定查詢條件并進(jìn)行查詢。
優(yōu)選的,在所述數(shù)據(jù)獲取模塊還包括
標(biāo)記模塊,用于將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限 的各屬性信息進(jìn)行標(biāo)記;
進(jìn)一步的,所述數(shù)據(jù)獲取模塊之后還包括
第一返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述 用戶對(duì)象所在終端;
第二返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù) 據(jù)結(jié)果集是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是則生成所述用戶對(duì)象沒有 相應(yīng)權(quán)限的提示信息返回給所述用戶對(duì)象所在終端。
與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn)
本發(fā)明將采用開源SPRING框架的AOP面向切面編程,將執(zhí)行具體業(yè)務(wù)邏輯設(shè)置 于資源類,將進(jìn)行數(shù)據(jù)鑒權(quán)的邏輯設(shè)置于切面類,將業(yè)務(wù)邏輯與數(shù)據(jù)權(quán)限鑒權(quán)進(jìn)行分離、解 耦,在資源的整體框架不變的情況下,針對(duì)資源的業(yè)務(wù)邏輯完全與對(duì)資源的數(shù)據(jù)權(quán)限相分 離,資源類無確切的、主動(dòng)的知道需要獲取何種屬性信息,只需被動(dòng)接收切面類傳輸?shù)膮?shù) 即可完成整個(gè)過程,因此,代碼冗余量低,節(jié)省存儲(chǔ)空間;另外,業(yè)務(wù)人員只需要關(guān)系其業(yè)務(wù) 中各用戶角色的數(shù)據(jù)權(quán)限,而不用需求技術(shù)人員根據(jù)業(yè)務(wù)人員的需求重新改編代碼,提高 了系統(tǒng)針對(duì)數(shù)據(jù)權(quán)限控制的靈活性,擴(kuò)展性強(qiáng)。
圖1是RBAC基本模型示意圖2是本發(fā)明一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法的流程示意圖3是本發(fā)明的一種基于RBAC模型擴(kuò)展后的系統(tǒng)模型示意圖4是本發(fā)明一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
參照?qǐng)D2,示出了本發(fā)明一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法,具體可以 包括
步驟100,配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng) 關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問 請(qǐng)求。
為了更清楚的說明本發(fā)明的應(yīng)用環(huán)境,在此首先介紹本發(fā)明基于圖1的RBAC模型 擴(kuò)展后的模型結(jié)構(gòu),參照?qǐng)D3,基于RBAC模型擴(kuò)展后的模型結(jié)構(gòu)示意圖
其中對(duì)于本模型來說
1、本模型包含了 RBAC模型中的核心模型RBACO、角色間繼承RBACl模型、責(zé)任分離 關(guān)RBAC2模型;
2、基于RBAC模型進(jìn)行擴(kuò)展,增加了數(shù)據(jù)權(quán)限約束配置,主要包括資源屬性、資源 操作條件、ACTOR屬性等信息;
3、RBACO區(qū)域中的針對(duì)ACTOR進(jìn)行擴(kuò)展,將員工、組織機(jī)構(gòu)、崗位、虛擬團(tuán)隊(duì)、系統(tǒng) 都作為ACTOR。
對(duì)于圖中各個(gè)實(shí)體,具體為
1、資源規(guī)格實(shí)體定義資源種類,包括業(yè)務(wù)數(shù)據(jù)、共享服務(wù)等;
2、資源實(shí)例實(shí)體指的是資源規(guī)格的實(shí)例化;例如業(yè)務(wù)數(shù)據(jù)實(shí)例化客戶視圖查 詢、客戶資料管理等,共享服務(wù)實(shí)例化客戶積分查詢、客戶繳費(fèi)查詢等;
3、資源屬性實(shí)體定義某個(gè)資源實(shí)例的屬性信息,并建立資源屬性與ACTOR屬性 的對(duì)應(yīng)關(guān)系;例如登陸的員工編碼、所屬分公司等;
4、操作定義操作的基礎(chǔ)數(shù)據(jù),例如查詢、修改、刪除等;
5、資源操作定義資源的各種可控制的操作信息;例如客戶資料查詢、客戶資料 修改、客戶資料刪除等;
6、資源操作條件定義資源操作的約束條件信息;例如客戶經(jīng)理只能查詢其名 下的客戶信息、修改其名下的客戶資料信息等;
7、角色定義人、系統(tǒng)在信息化應(yīng)用軟件系統(tǒng)中扮演的角色;例如系統(tǒng)管理員、客戶經(jīng)理等
8、角色繼承描述A、B兩個(gè)角色的繼承關(guān)系,如果A繼承B角色,則A角色享受B 角色的所有權(quán)限;
9、角色繼承約束描述A角色繼承B角色享受B角色的權(quán)限同時(shí),進(jìn)行一些權(quán)限的 約束限制;
10、ACTOR :定義數(shù)據(jù)權(quán)限的作用對(duì)象,包括用戶、員工、組織機(jī)構(gòu)、虛擬團(tuán)隊(duì)、系統(tǒng) 等;
1UACT0R屬性定義ACTOR的屬性信息;例如登陸系統(tǒng)的ACTOR所屬本地網(wǎng)、服務(wù) 區(qū)、營維中心等;
12、ACTOR特權(quán)描述除授予ACTOR角色權(quán)限范圍之外的一些特殊權(quán)限;
13、ACTOR約束描述授予ACTOR的一些約束權(quán)限,包括約束限制授予ACTOR角色 的部分權(quán)限。
其中,對(duì)于權(quán)限配置實(shí)現(xiàn)思路為
1、建立資源規(guī)格維護(hù)資源規(guī)格對(duì)應(yīng)的業(yè)務(wù)實(shí)體等信息;
2、配置資源操作針對(duì)每一種資源規(guī)格配置其資源實(shí)例,配置資源操作信息,定義 數(shù)據(jù)操作信息;
3、配置資源屬性設(shè)置資源的屬性、屬性限制條件;通過屬性限制條件設(shè)置,建立 資源屬性與登錄系統(tǒng)的ACTOR屬性的關(guān)系實(shí)現(xiàn)數(shù)據(jù)權(quán)限訪問控制;
4、配置資源操作條件設(shè)置訪問資源操作限制條件,限制條件為資源屬性的子 集;
5、創(chuàng)建角色建立角色信息;
6、角色授權(quán)給予角色分配對(duì)應(yīng)的資源的據(jù)操作權(quán)限,此處要求,針對(duì)某一個(gè)資 源,首先分配的功能操作權(quán)限,其次基于已分配的功能操作權(quán)限再分配其數(shù)據(jù)權(quán)限;
7、ACTOR分配角色針對(duì)具體的ACTOR分配對(duì)應(yīng)的角色;
8、ACTOR授權(quán)針對(duì)具體的ACTOR直接分配其角色外資源訪問的特權(quán)與約束;
9、ACTOR屬性配置配置ACTOR屬性信息,該屬性與屬性限制條件存在內(nèi)在的關(guān) 系,且是其子集;
10、角色繼承配置包括配置角色繼承關(guān)系、角色繼承約束汸角色繼承B角色后,A 角色也享受B角色所有的權(quán)限;角色繼承約束,主要是針對(duì)A角色的一些約束限制,約束其 只能享有B角色的部分權(quán)限。
在步驟100中,所述用戶對(duì)象即為前述ACT0R,如前所述配置資源屬性設(shè)置資源 的屬性、屬性限制條件;通過屬性限制條件設(shè)置,建立資源屬性與登錄系統(tǒng)的ACTOR屬性的 關(guān)系實(shí)現(xiàn)數(shù)據(jù)權(quán)限訪問控制;與ACTOR屬性配置配置ACTOR屬性信息,該屬性與屬性限制 條件存在內(nèi)在的關(guān)系,且是其子集;即配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各 資源類之間的對(duì)應(yīng)關(guān)系。
比如“客戶視圖”資源類,需要員工編碼、員工所屬分公司編碼、員工職位編碼、特 殊權(quán)限標(biāo)識(shí)等等。對(duì)于可訪問客戶視圖的一用戶對(duì)象(ACTOR),可設(shè)置其屬性信息與其員工 編碼、員工所屬分公司編碼、員工職位編碼對(duì)應(yīng)。在本實(shí)施例中配置用戶對(duì)象與各屬性之間 的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng)關(guān)系可由具體設(shè)計(jì)數(shù)據(jù)權(quán)限的業(yè)務(wù)人員進(jìn)行配置。
其中,配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源 類的訪問請(qǐng)求,可采用開源SPRING框架的AOP面向切面編程,將業(yè)務(wù)邏輯與數(shù)據(jù)權(quán)限鑒權(quán)進(jìn)行分離、解耦,本方法以數(shù)據(jù)權(quán)限鑒權(quán)作為橫切面,實(shí)現(xiàn)數(shù)據(jù)權(quán)限的訪問控制。其中,資源類為實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)具體的業(yè)務(wù)邏輯,無需通過set語句將所需的Actor屬性值信息Set到對(duì)應(yīng)的對(duì)象中;切面類可以理解為,負(fù)責(zé)完成從Session中將ACTOR的屬性信息Set到對(duì)應(yīng)的資源屬性實(shí)體表中配置的對(duì)應(yīng)的VO (value object,值對(duì)象)等對(duì)象中。該配置可由技術(shù)人員進(jìn)行配置。
所述配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求包括
步驟S101,在spring框架的XML配置文件中定義各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系;所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求;
WEB服務(wù)器配置Spring (Spring也表示是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性由Rod Johnson創(chuàng)建的)Α0Ρ的攔截器;最后在Spring的XML的Extensible Markup Language,可擴(kuò)展標(biāo)記語言)配置文件中完成切面配置,即建立切面類與資源類的對(duì)應(yīng)關(guān)系,定義當(dāng)程序執(zhí)行資源類之前要完成切面類的執(zhí)行。
和/或,步驟S102,采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求。
可以采用數(shù)據(jù)庫表結(jié)構(gòu)方式,建立普通類與切面類的對(duì)應(yīng)關(guān)系完成切面配置,即建立切面類與資源類的對(duì)應(yīng)關(guān)系,定義當(dāng)程序執(zhí)行資源類之前要完成切面類的執(zhí)行。
基于上述配置,數(shù)據(jù)權(quán)限的控制過程包括
步驟110,當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí),通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求;
在本發(fā)明實(shí)施中,對(duì)于用戶以某一 id登陸后,系統(tǒng)會(huì)將其與actor (用戶對(duì)象)對(duì)應(yīng),首先進(jìn)行功能權(quán)限校驗(yàn),比如actor具有查看“客戶視圖”的功能校驗(yàn)通過,那么在用戶的顯示界面可顯示相應(yīng)的功能界面和按鈕,以接受用戶進(jìn)行后續(xù)的數(shù)據(jù)操作,比如查看具體數(shù)據(jù)等。
那么在本實(shí)施例中,假如“張三”是??诜止究蛻艚?jīng)理,查詢“客戶視圖”時(shí),只能查詢??诜止?、且其名下客戶的客戶資料等信息。那么用戶以“張三”登陸系統(tǒng)時(shí),系統(tǒng)首先將“張三”與對(duì)應(yīng)的actor對(duì)應(yīng),然后驗(yàn)證具有查詢“客戶視圖“的功能,么在用戶的終端界面展現(xiàn)“客戶視圖”功能界面。
當(dāng)用戶訪問“查詢視圖”的具體數(shù)據(jù)時(shí),即訪問“查詢視圖”資源類時(shí),比如點(diǎn)擊“查詢視圖”功能界面的查詢按鈕時(shí),那么根據(jù)資源類與切面類的對(duì)應(yīng)關(guān)系,系統(tǒng)調(diào)用所述切面類攔截所述訪問請(qǐng)求。
步驟120,所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象;
切面類攔截了所述訪問請(qǐng)求后,即提取訪問請(qǐng)求的目的資源類對(duì)應(yīng)需求的屬性信息,也即資源類對(duì)應(yīng)的屬性信息,然后根據(jù)資源類需求的屬性信息去提取actor的相應(yīng)屬性信息賦值給資源類的對(duì)象。
其中,所述切面類根據(jù)所述資對(duì)應(yīng)的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象包括
步驟S121,所述 切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶對(duì)象的session中是否存在所述屬性信息;
在用戶登陸時(shí),服務(wù)器會(huì)針對(duì)用戶對(duì)象維護(hù)一個(gè)session (會(huì)話)以進(jìn)行通信。
比如“客戶視圖”資源類需要的屬性包括員工編碼,部門編碼,職位編碼。那么對(duì) 于前述“張三”對(duì)應(yīng)的actor,本步驟首先去session中查詢是否存在張三的員工編碼、部門 編碼、職位編碼,如果沒有,則進(jìn)入步驟S123。如果有則進(jìn)入步驟S122。從數(shù)據(jù)表中獲取張 三的員工編碼、部門編碼、職位編碼,比如員工編碼1001、海口分部門編碼4601、客戶經(jīng)理 編碼CM46011001信息。
步驟S122,如果存在,貝U從所述session中提取用戶對(duì)象的屬性信息賦值給資源 類的第一對(duì)象;
如果存在,則獲取張三的員工編碼、部門編碼、職位編碼,比如員工編碼1001、海 口分部門編碼4601、客戶經(jīng)理編碼CM46011001信息,然后將張三的員工編碼1001、???分公司編碼4601、客戶經(jīng)理編碼CM46011001的值Set到客戶視圖的普通類中的VO對(duì)象 custViewMVO 對(duì)應(yīng)的屬性 staff Id、regionld、custManager 中。
本步驟session中存在相應(yīng)屬性信息可能是因?yàn)椋瑥埲驹诖尾僮髦?,可能訪 問其他某個(gè)資源類,而該資源類第一次也用到上述信息,如果是第一次使用,則通過步驟 S123獲取相應(yīng)屬性信息寫入session。
步驟S123,如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中, 提取所述需求的屬性信息中缺少的屬性信息寫入所述session中,再從session中將所述 需求的屬性信息賦值給資源類的對(duì)象。
另外,當(dāng)session信息中不存在資源類所需求的屬性信息,或者session中缺少資 源類所需求的屬性信息中的一個(gè)或者多個(gè),那么則從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中, 提取所述需求的屬性信息中缺少的屬性信息寫入所述session中,再從session中將所述 需求的屬性信息賦值給資源類的對(duì)象。
比如對(duì)于前述“張三”例子,如果缺少“客戶視圖”所述的全部屬性信息,那么本步 驟從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中提取張三的員工編碼1001、??诜植块T編碼4601、 客戶經(jīng)理編碼CM46011001信息寫入session中,然后張三的員工編碼1001、海口分公司編 碼4601、客戶經(jīng)理編碼CM46011001的值Set到客戶視圖的普通類中的VO對(duì)象custViewMVO 對(duì)應(yīng)的屬性 staff Id、regionld、custManager 中。
對(duì)于缺少部分資源類所需的屬性信息,其操作過程類似,在此不加以限制。
步驟130,所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。
切面類將資源類所需的actor的屬性信息賦值給資源類的對(duì)象后,則放棄攔截, 通知資源類執(zhí)行其邏輯,根據(jù)所述對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。
其中,所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集 包括
步驟S130,所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài) SQL語句執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根據(jù)屬性信息確 定查詢條件并進(jìn)行查詢。
資源類的VO等對(duì)象獲得屬性信息后,則獲取VO對(duì)象的屬性值信息,傳入普通類中的動(dòng)態(tài)SQL語句中執(zhí)行生成Actor的數(shù)據(jù)權(quán)限范圍的數(shù)據(jù)結(jié)果集,比如將regionld = 4601 且custManager = CM46011001做為SQL語句的查詢條件篩選出張三權(quán)限范圍內(nèi)的客戶列表。
在本發(fā)明中,對(duì)于資源類的動(dòng)態(tài)SQL語句查詢獲得的結(jié)果集,如果結(jié)果集不為空, 則可直接返回結(jié)果集給用戶對(duì)象所在終端;如果結(jié)果集為空,則說明可能數(shù)據(jù)庫存在對(duì)應(yīng) 相應(yīng)功能權(quán)限的數(shù)據(jù),但是用戶沒有相應(yīng)數(shù)據(jù)權(quán)限,或者數(shù)據(jù)庫中對(duì)應(yīng)相應(yīng)功能權(quán)限根本 就沒有數(shù)據(jù),那么可提示用戶對(duì)象所在終端“沒有查詢到相應(yīng)的數(shù)據(jù)或者用戶數(shù)據(jù)權(quán)限不 足”。
另外,所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL 語句時(shí)還包括
步驟A130將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限的各 屬性信息進(jìn)行標(biāo)記;
即標(biāo)記所述動(dòng)態(tài)SQL語句中的查詢條件是否是對(duì)應(yīng)用戶對(duì)象的數(shù)據(jù)權(quán)限。
從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集之后還包括
步驟A131,當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述用戶對(duì)象 所在終端;
步驟A132,當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù)據(jù)結(jié)果集 是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是,則生成所述用戶對(duì)象沒有相應(yīng)權(quán) 限的提示信息返回給所述用戶對(duì)象所在終端。
在步驟A130至A132實(shí)施例中,資源類將相應(yīng)切面類傳入的參數(shù)(資源類需求的 actor的屬性信息),作為查詢數(shù)據(jù)庫的查詢條件進(jìn)行搜索,那么對(duì)于數(shù)據(jù)庫來說,其檢索 結(jié)果可能因?yàn)槭菙?shù)據(jù)庫中根本不存在相應(yīng)功能權(quán)限的數(shù)據(jù)而導(dǎo)致得到空集,或者是因?yàn)閿?shù) 據(jù)庫中存在相應(yīng)功能權(quán)限的數(shù)據(jù)但是該用戶對(duì)象沒有數(shù)據(jù)權(quán)限而導(dǎo)致的空集,為了使用戶 明確知道其是沒有相應(yīng)數(shù)據(jù)權(quán)限,那么當(dāng)檢索結(jié)果為空集時(shí),則可根據(jù)各屬性信息的標(biāo)記, 判斷數(shù)據(jù)結(jié)果集是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得,如果是可返回當(dāng)前用戶對(duì)象 沒有相應(yīng)數(shù)據(jù)權(quán)限的提示信息給用戶對(duì)象所在終端,如果不是則可返回當(dāng)前不存在實(shí)際數(shù) 據(jù)內(nèi)容的提示給用戶對(duì)象所在終端;避免使用者認(rèn)為服務(wù)器沒響應(yīng),而一直重復(fù)發(fā)送請(qǐng)求, 導(dǎo)致服務(wù)器資源浪費(fèi)。
本發(fā)明將采用開源Spring框架的AOP面向切面編程,將執(zhí)行具體業(yè)務(wù)邏輯設(shè)置 于資源類,將進(jìn)行數(shù)據(jù)鑒權(quán)的邏輯設(shè)置于切面類,將業(yè)務(wù)邏輯與數(shù)據(jù)權(quán)限鑒權(quán)進(jìn)行分離、解 耦,在資源的整體框架不變的情況下,針對(duì)資源的業(yè)務(wù)邏輯完全與對(duì)資源的數(shù)據(jù)權(quán)限相分 離,資源類無確切的、主動(dòng)的知道需要獲取何種屬性信息,只需被動(dòng)接收切面類傳輸?shù)膮?shù) 即可完成整個(gè)過程,因此,代碼冗余量低,節(jié)省存儲(chǔ)空間;另外,業(yè)務(wù)人員只需要關(guān)系其業(yè)務(wù) 中各用戶角色的數(shù)據(jù)權(quán)限,而不用需求技術(shù)人員根據(jù)業(yè)務(wù)人員的需求重新改編代碼,提高 了系統(tǒng)針對(duì)數(shù)據(jù)權(quán)限控制的靈活性,擴(kuò)展性強(qiáng)。
參照?qǐng)D4,其示出了本發(fā)明一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制系統(tǒng),包括
配置模塊200,用于配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之 間的對(duì)應(yīng)關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源 類的訪問請(qǐng)求;
攔截模塊210,用于當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類 時(shí),通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求;
賦值模塊220,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì) 象的屬性信息賦值給資源類的第一對(duì)象;
數(shù)據(jù)獲取模塊230,用于所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中 獲取數(shù)據(jù)結(jié)果集。
其中,所述賦值模塊包括
判斷模塊,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶 對(duì)象的session中是否存在所述屬性信息;
第一賦值模塊,用于如果存在,貝1J從所述session中提取用戶對(duì)象的屬性信息賦 值給資源類的第一對(duì)象;
第二賦值模塊,用于如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性 信息表中,提取所述需求的屬性信息中缺少的屬性信息寫入所述SESSION中,再從SESSION 中將所述需求的屬性信息賦值給資源類的對(duì)象。
其中,所述配置模塊包括
第一配置模塊,用于在spring框架的XML配置文件中定義各資源類與相應(yīng)切面類 的對(duì)應(yīng)關(guān)系;所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求;
和/或,第二配置模塊,用于采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì) 應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求。
其中,所述數(shù)據(jù)獲取模塊包括
第一數(shù)據(jù)獲取模塊,用于所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資 源類中的動(dòng)態(tài)SQL語句執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根 據(jù)屬性信息確定查詢條件并進(jìn)行查詢。
在所述數(shù)據(jù)獲取模塊還包括
標(biāo)記模塊,用于將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限 的各屬性信息進(jìn)行標(biāo)記;
進(jìn)一步的,所述數(shù)據(jù)獲取模塊之后還包括
第一返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述 用戶對(duì)象所在終端;
第二返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù) 據(jù)結(jié)果集是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是則生成所述用戶對(duì)象沒有 相應(yīng)權(quán)限的提示信息返回給所述用戶對(duì)象所在終端。
需要說明的是,對(duì)于上述方法實(shí)施例而言,為了簡單描述,故將其都表述為一系列 的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)?依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知 悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明 所必須的。
對(duì)于系統(tǒng)或系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡 單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本發(fā)明可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、服務(wù) 器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、網(wǎng)絡(luò) PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序 模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組 件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由 通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以 位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將 一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作 之間存在任何這種實(shí)際的關(guān)系或者順序。
以上對(duì)本發(fā)明所提供的一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法和系統(tǒng),進(jìn) 行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施 例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人 員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明 書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法,其特征在于,包括 配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng)關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求; 基于上述配置,數(shù)據(jù)權(quán)限的控制過程包括 當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí),通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求; 所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象; 所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述切面類根據(jù)所述資對(duì)應(yīng)的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象包括 所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶對(duì)象的SESSION中是否存在所述屬性信息; 如果存在,則從所述SESSION中提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象;如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中,提取所述需求的屬性信息中缺少的屬性信息寫入所述SESSION中,再從SESSION中將所述需求的屬性信息賦值給資源類的對(duì)象。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求包括 在SPRING框架的XML配置文件中定義各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系;所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求; 和/或,采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集包括 所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL語句執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根據(jù)屬性信息確定查詢條件并進(jìn)行查詢。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL語句時(shí)還包括 將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限的各屬性信息進(jìn)行標(biāo)記; 進(jìn)一步的,所述執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集之后還包括 當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述用戶對(duì)象所在終端; 當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù)據(jù)結(jié)果集是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是,則生成所述用戶對(duì)象沒有相應(yīng)權(quán)限的提示信息返回給所述用戶對(duì)象所在終端。
6.一種基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制系統(tǒng),其特征在于,包括 配置模塊,用于配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng)關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求; 攔截模塊,用于當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí),通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求; 賦值模塊,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象; 數(shù)據(jù)獲取模塊,用于所述資源類根據(jù)所述第一對(duì)象中的屬性信息,從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述賦值模塊包括 判斷模塊,用于所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,判斷對(duì)應(yīng)用戶對(duì)象的SESSION中是否存在所述屬性信息; 第一賦值模塊,用于如果存在,則從所述SESSION中提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象; 第二賦值模塊,用于如果不存在或者不全部存在,則從對(duì)應(yīng)所述用戶對(duì)象的屬性信息表中,提取所述需求的屬性信息中缺少的屬性信息寫入所述SESSION中,再從SESSION中將所述需求的屬性信息賦值給資源類的對(duì)象。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述配置模塊包括 第一配置模塊,用于在SPRING框架的XML配置文件中定義各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系;所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求; 和/或,第二配置模塊,用于采用數(shù)據(jù)庫表結(jié)構(gòu)建立各資源類與相應(yīng)切面類的對(duì)應(yīng)關(guān)系,所述切面類用于攔截訪問所述資源類的訪問請(qǐng)求。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)獲取模塊包括 第一數(shù)據(jù)獲取模塊,用于所述資源類獲取所述對(duì)象中的各屬性信息,傳入所述資源類中的動(dòng)態(tài)SQL語句執(zhí)行并生成所述用戶對(duì)象的數(shù)據(jù)結(jié)果集;所述動(dòng)態(tài)SQL語句用于根據(jù)屬性信息確定查詢條件并進(jìn)行查詢。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,在所述數(shù)據(jù)獲取模塊還包括 標(biāo)記模塊,用于將所述第一對(duì)象中的屬性信息,對(duì)當(dāng)前屬于用戶對(duì)象的數(shù)據(jù)權(quán)限的各屬性信息進(jìn)行標(biāo)記; 進(jìn)一步的,所述數(shù)據(jù)獲取模塊之后還包括 第一返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集不為空時(shí),直接將數(shù)據(jù)結(jié)果集返回給所述用戶對(duì)象所在終端; 第二返回模塊,用于當(dāng)所述數(shù)據(jù)結(jié)果集為空時(shí),則根據(jù)各屬性信息的標(biāo)記,判斷數(shù)據(jù)結(jié)果集是否根據(jù)屬于所述用戶對(duì)象的數(shù)據(jù)權(quán)限獲得的;如果是則生成所述用戶對(duì)象沒有相應(yīng)權(quán)限的提示信息返回給所述用戶對(duì)象所在終端。
全文摘要
本發(fā)明提供了基于RBAC模型擴(kuò)展的數(shù)據(jù)權(quán)限控制方法和系統(tǒng),涉及計(jì)算機(jī)技術(shù)領(lǐng)域。所述方法包括配置用戶對(duì)象與各屬性之間的對(duì)應(yīng)關(guān)系,各屬性與各資源類之間的對(duì)應(yīng)關(guān)系;配置各資源類與各切面類的對(duì)應(yīng)關(guān)系,基于上述配置,數(shù)據(jù)權(quán)限的控制過程包括當(dāng)一登錄系統(tǒng)的用戶對(duì)象發(fā)送訪問請(qǐng)求以請(qǐng)求訪問一資源類時(shí),通過資源類對(duì)應(yīng)的切面類攔截所述訪問請(qǐng)求;所述切面類根據(jù)所述資源類對(duì)應(yīng)需求的屬性信息,提取用戶對(duì)象的屬性信息賦值給資源類的第一對(duì)象;所述資源類根據(jù)所述第一對(duì)象中的屬性信息從數(shù)據(jù)庫中獲取數(shù)據(jù)結(jié)果集。本發(fā)明針對(duì)資源的業(yè)務(wù)邏輯完全與對(duì)數(shù)據(jù)權(quán)限相分離,提高了系統(tǒng)針對(duì)數(shù)據(jù)權(quán)限控制的靈活性,擴(kuò)展性強(qiáng),且代碼冗余量低,節(jié)省空間。
文檔編號(hào)G06F21/30GK103049684SQ20121056336
公開日2013年4月17日 申請(qǐng)日期2012年12月21日 優(yōu)先權(quán)日2012年12月21日
發(fā)明者趙雨佳, 王強(qiáng), 趙守來 申請(qǐng)人:大唐軟件技術(shù)股份有限公司