王皓宇(勝利油田東辛采油廠,山東 東營(yíng) 257000)
基于角色的訪問控制方法RBAC運(yùn)用于網(wǎng)絡(luò)訪問控制權(quán)限設(shè)計(jì),是為了快速設(shè)置限制訪問主體:如用戶、進(jìn)程、服務(wù)等,對(duì)訪問客體:如文件、系統(tǒng)等的訪問權(quán)限,而Extjs框架技術(shù)中的多級(jí)動(dòng)態(tài)樹結(jié)構(gòu)結(jié)合RBAC,可以實(shí)現(xiàn)多級(jí)用戶角色訪問控制權(quán)限的高效管理。
企業(yè)網(wǎng)絡(luò)網(wǎng)頁(yè)訪問控制有三類:其中,自主式和強(qiáng)制式二者后臺(tái)權(quán)限維護(hù)工作量太大,需要專業(yè)人員太多,不便于管理。而以角色為中介,在用戶和權(quán)限之間進(jìn)行訪問控制的RBAC網(wǎng)頁(yè)訪問控制,特點(diǎn)是在前端的管理中,就可以方便地管理用戶、角色和權(quán)限;而且系統(tǒng)的角色決定用戶能做什么,所以安全性大大提高[1]
ExtJS是一種用于編寫程序系統(tǒng)前端頁(yè)面,而與后面基層無(wú)關(guān)的Ajax框架[2,是實(shí)現(xiàn)樹結(jié)構(gòu)的理想選擇[3]。采用ExtJS的前端開發(fā)技術(shù)和SSH框架(Struts+Spring+Hibernate)的后臺(tái)技術(shù)設(shè)計(jì)[4],可以有效解決前后臺(tái)管理互相影響的問題,其樹結(jié)構(gòu)允許動(dòng)態(tài)管理控制擴(kuò)展和樹節(jié)點(diǎn)的異步加載,便于單獨(dú)修改增刪,而不影響系統(tǒng)的其它層。
基于角色的訪問控制方法效率高、又安全,但是用傳統(tǒng)的編程技術(shù)方法實(shí)現(xiàn)角色的訪問控制樹,依然非常復(fù)雜,要解決這個(gè)問題,需要引入Extjs框架技術(shù),其ExtJS多級(jí)動(dòng)態(tài)樹結(jié)構(gòu),實(shí)現(xiàn)了權(quán)限管理系統(tǒng),其中功能模塊管理以ExtJS頁(yè)面的樹型結(jié)構(gòu)來(lái)完成對(duì)整個(gè)信息平臺(tái)所需的多級(jí)功能模塊的動(dòng)態(tài)管理;權(quán)限管理屬于對(duì)多級(jí)功能模塊的最終子節(jié)點(diǎn)的模塊動(dòng)態(tài)管理;等級(jí)管理功能完成了分配不同等級(jí)的用戶不同的操作等級(jí);角色功能對(duì)指定角色所擁有的等級(jí)和權(quán)限的分配;用戶功能為用戶分配指定的角色,實(shí)現(xiàn)不同模塊的不同操作。權(quán)限配置管理是對(duì)功能權(quán)限、模塊、以及模塊下功能進(jìn)行配置,將功能權(quán)限、模塊分配給角色,使角色下的用戶根據(jù)職責(zé)的不同擁有不同的權(quán)限。功能權(quán)限是最小粒度的權(quán)限,能夠控制到web頁(yè)面中的按鍵、菜單等頁(yè)面元素。管理員可以自定義功能權(quán)限、定義權(quán)限編碼。具有新建、編輯、刪除功能權(quán)限功能。主要功能權(quán)限有新編軟件分類、編輯軟件分類、刪除軟件分類;新建軟件字典、編輯軟件字典、刪除軟件字典;圖標(biāo)管理;新建資源區(qū)域、編輯資源區(qū)域、刪除資源區(qū)域;新建主機(jī)、編輯主機(jī),不過,無(wú)權(quán)刪除主機(jī)。
軟件開發(fā)平臺(tái):系統(tǒng)主體軟件框架采用基于J2EE技術(shù)成熟的SSH(Spring MVC+Spring+Hibernate)架構(gòu)。該框架比較實(shí)用,前端頁(yè)面采用EXTJS,經(jīng)過StrutsSpringHibemate,與數(shù)據(jù)庫(kù)DB進(jìn)行交互,而且互不影響。
程序系統(tǒng)的建立。首先建立權(quán)限審批和管理之間的關(guān)聯(lián)結(jié)構(gòu)。設(shè)計(jì)系統(tǒng)授權(quán)審批、用戶管理、軟件管理三大模塊,每個(gè)模塊的邏輯處理都是日志管理、安全管理和事務(wù)管理三項(xiàng)內(nèi)容。其次,做好用戶角色權(quán)限數(shù)據(jù)表之間關(guān)系,用戶表、角色表、權(quán)限表三類數(shù)據(jù)表中,角色表有聯(lián)系用戶表和權(quán)限表的公共字段,便于角色做中介,以有限的權(quán)限應(yīng)對(duì)大量不確定的用戶,節(jié)省系統(tǒng)開銷,提高運(yùn)行速度和用戶瀏覽速度。第三建立程序時(shí),界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三者之間可以有效獨(dú)立,并可互相調(diào)用,便于維護(hù),升級(jí),在需求變化時(shí),只需要將其中某一小塊修改,而不需要大動(dòng)干戈,要移植時(shí),只需要在界面添加相應(yīng)的控件即可,里面的類和實(shí)體,業(yè)務(wù)邏輯,數(shù)據(jù)訪問層都不需要修改。
權(quán)限管理系統(tǒng)架構(gòu)分為3個(gè)層次:WEB應(yīng)用層、業(yè)務(wù)實(shí)現(xiàn)層、數(shù)據(jù)層。WEB應(yīng)用層為管理員進(jìn)行權(quán)限管理和配置提供WEB操作頁(yè)面,主要有用戶管理、單位管理、角色管理和權(quán)限配置管理,又叫表示層的前臺(tái)web頁(yè)面使用Extjs RIA進(jìn)行前臺(tái)頁(yè)面的開發(fā),Struts框架是基于MVC的Web層的應(yīng)用框架,接受ExtJS頁(yè)面數(shù)據(jù)。業(yè)務(wù)實(shí)現(xiàn)層接收來(lái)自從web頁(yè)面提交的管理命令實(shí)現(xiàn)權(quán)限的配置、授權(quán),以及普通用戶在使用某個(gè)應(yīng)用系統(tǒng)時(shí)進(jìn)行權(quán)限的定制,如菜單樹的顯示、頁(yè)面元素的控制,另外還對(duì)用戶訪問過程中的會(huì)話控制。數(shù)據(jù)層采用Mysql數(shù)據(jù)庫(kù)用戶保存與權(quán)限相關(guān)的數(shù)據(jù),包括用戶表、角色表、功能表、模塊表、以及表示模塊與功能、功能與角色、用戶與角色間的一些關(guān)聯(lián)關(guān)系的數(shù)據(jù)表;數(shù)據(jù)層的表與業(yè)務(wù)層實(shí)體對(duì)象通過ORM方式相對(duì)應(yīng)。
這樣,在整套權(quán)限系統(tǒng)中,建立系統(tǒng)程序時(shí),界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三者之間可以有效獨(dú)立,并可互相調(diào)用,便于維護(hù),升級(jí),在需求變化時(shí),只需要將其中某一小塊修改,而不需要大動(dòng)干戈,要移植時(shí),只需要界面添加相應(yīng)的控件即可,里面的類和實(shí)體,業(yè)務(wù)邏輯,數(shù)據(jù)訪問層都不需要修改,三層結(jié)構(gòu)高效,簡(jiǎn)潔,方便,易維護(hù),易修改,因此采用包括表示層,業(yè)務(wù)層,數(shù)據(jù)訪問層的三層結(jié)構(gòu)模式設(shè)計(jì)。按照上述相關(guān)設(shè)計(jì)實(shí)現(xiàn)的角色權(quán)限管理系統(tǒng),反復(fù)修改后運(yùn)行效果良好,可以推廣應(yīng)用。
根據(jù)勝利油田軟件查詢系統(tǒng)的權(quán)限管理需求,結(jié)合ExtJS及RBAC、SSH技術(shù),以及系統(tǒng)開發(fā)的基本原理,設(shè)計(jì)并實(shí)現(xiàn)了一套權(quán)限管理系統(tǒng)。前臺(tái)應(yīng)用ExtJS富客戶端技術(shù),基于角色權(quán)限管理,提高了用戶及安全管理,具有較高的可用性和可靠性。本文通過RBAC和Extjs設(shè)計(jì)權(quán)限管理系統(tǒng)的研究和實(shí)踐,驗(yàn)證了二者結(jié)合的方法,具有實(shí)用、高效和安全的特性。