999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

B/S結構軟件系統權限管理的精粒度實現*

2010-10-20 06:14:18倪泰山周永剛
地震研究 2010年3期
關鍵詞:數據庫用戶管理

倪泰山,周永剛

(1.云南省紅河州地震局,云南蒙自 661100;2.北京市延慶縣地震局,北京 102100)

B/S結構軟件系統權限管理的精粒度實現*

倪泰山1,周永剛2

(1.云南省紅河州地震局,云南蒙自 661100;2.北京市延慶縣地震局,北京 102100)

介紹了B/S結構軟件設計中的精粒度權限管理的思路及方法,運用 Java高級程序設計語言,采用 Struts2+Hibernate+Spring框架,結合 DWR技術實現了軟件系統中的權限管理,并將該技術應用到云南省的臺站管理系統的后臺管理中。

B/S結構;數據庫;權限管理;訪問控制列表

0 引言

在基于 B/S結構或 C/S結構的軟件系統中,權限管理是一個基礎的而且非常重要的模塊。權限管理設計的好壞,直接影響到軟件系統的安全性、可維護性和可擴展性。權限管理有多種實現技術,最簡單的是基于用戶的權限管理(倪泰山等,2009),另一種是基于角色、組、用戶的權限認證技術,這種技術將具有相同權限的用戶劃歸同一角色或同一個組,然后將權限賦予角色,實現精細的權限控制。

在“地震臺站綜合管理系統”2.0版的設計中,設計人員采用開源框架 Struts2+Hibernate+Spring技術進行代碼重構,使用 DWR框架實現后臺與前臺交互,權限管理采用基于 “角色 +用戶”的認證技術,從而實現了對用戶權限的精細控制。

1 應用系統的權限管理設計

1.1 權限管理的粒度

粒度問題是數據倉庫設計的一個最重要方面。粒度是指數據倉庫的數據單位中保存數據的細化或綜合程度的級別。

(1)用戶(或角色)粒度。它可以精細到角色或具體的用戶,由系統管理員將某一資源的訪問權限授權給角色或用戶,從而實現對數據庫的CRUD(Create,Read,Update,Delete)操作。這里的角色可以理解為實際工作中的崗位、職位或者分工。角色和用戶組看起來很相似,但卻有著本質的區別,最主要的區別在于:用戶組是一個用戶的集合,并不涉及它的授權許可;而角色則既是一個用戶的集合,又是一個授權許可的集合。

(2)操作對象粒度。對數據庫的查詢、增加、更新、刪除等操作,是由具體的模塊實現的(劉敦敏,2004)。對于新注冊的用戶,一般可以自動賦予查詢權限,對沒有特別限制的模塊中實現的功能,都可以進行數據瀏覽。增加、更新、刪除等功能則由系統管理員在授權頁面對角色或某一具體用戶進行模塊的 CRUD授權,用一個正整數的低 4位的取值表示 CRUD權限,位的取值為“1”表示允許,取值為 “0”表示不允許。0001為十進制的 1,擁有 C權限;0010為十進制的 2,擁有 R權限;0100為十進制的 4,擁有 U權限;1000為十進制的 8,擁有 D權限。它們之間進行“與”運算則構成組合權限。例如,某角色對某一資源的權限為 1101(十進制 13),表示該角色對該資源具有 CRD權限,但沒有 U(更新)權限。

1.2 權限管理數據庫表結構設計

權限管理作為 B/S結構軟件系統的基礎,采用 5張數據庫表來維持。模塊數據表(T_Modules)記錄每個模塊的名稱(前臺主菜單名稱)及子模塊名稱(前臺子菜單名稱)、入口地址等信息,它是前臺顯示菜單的主要依據。用戶信息記錄在用戶數據表(T_Users)中,角色信息記錄在角色數據表(T_Roles)中。用戶與角色是 “多對多”關系,靠用戶角色數據表(T_UserRoles)通過外鍵方式來維護。用戶或角色對某一資源的授權信息則記錄在 ACL數據表(T_ACL)中。它們之間的關系及物理模型見圖 1。

圖 1 權限管理數據表及關系的物理模型Fig.1 RightsManagement database tables and relations bet ween the physicalmodel

在ACL數據表中,主體類型一般是指用戶或角色。當主體類型為用戶時主體標識為用戶 id,當主體類型為角色時主體標識為角色 id。資源標識就是指模塊 id。授權狀態是一個正整數的低 4位二進制表示的權限組合。

2 權限管理的實現

權限管理包括授權和認證。授權是指將某一資源的 CRUD操作授權給用戶或角色。認證是確認用戶對某一資源是否具有相應權限的過程。

2.1 授權實現

授權包括角色授權和用戶授權。角色授權就是先建立某一角色,然后對這個角色能訪問的資源進行 CRUD權限分配,再將角色分配給具有相同權限的用戶。角色授權的優點是可以批量授權,可以極大地提高管理效率。用戶授權,就是將資源的訪問權限直接授權給某個具體的用戶。

要實現權限的精粒度控制,就必須允許用戶自行定義角色,然后對角色進行授權,而不是由軟件設計者在寫程序時就預先固定角色。而且這種精粒度的權限管理必須達到對菜單級的精細控制以及對 WEB頁面上的按鈕級的精細控制。在B/S結構的軟件系統中,對數據的增加、讀取、修改、刪除等操作都是通過WEB頁面上的相應按鈕或超鏈接的方式實現的。用戶點擊按鈕將觸發相應的請求,服務器端收到請求后調用業務邏輯完成相應的 CRUD操作。例如,用戶點擊 “增加”按鈕,一般會出現增加數據的WEB頁面,用戶填寫好相關的表單,單擊 “提交”按鈕后,將觸發“添加”(Create)請求并發送給服務器端,服務器端收到請求后在后臺調用添加數據的業務邏輯,將數據持久化到數據庫中,完成對數據的添加操作。也就是說,實現精細控制的權限管理后,如果用戶對某一資源具有相應權限(例如刪除權限),則在客戶端的軟件界面上 “刪除”按鈕對該用戶是可見的,否則就是屏蔽的。

在具體的程序實現過程中,授權就是將該角色能訪問的資源標識(模塊 id)和角色標識(角色 id)以及它對該資源具有的 CRUD權限(一個正整數的低 4位對應的二進制組合)寫入 ACL數據表,完成授權數據的持久化操作。

2.2 認證實現

認證就是用戶登錄后,系統根據他所擁有的權限,列出相應的菜單。具有不同權限的用戶登錄后,前臺展現的菜單是不同的。

在具體實現程序時,認證就是從 ACL數據表中檢索出登錄到系統的用戶所能訪問的資源標識(即模塊 id),形成前臺顯示菜單需要的數據格式,供前臺顯示菜單使用。同時,將用戶所能訪問的資源標識及用戶對該資源具有的 CRUD權限(一個正整數的低 4位對應的二進制組合),寫入 session中,然后在視圖(一般是 jsp頁面)上從 session中取出用戶的 ACL控制列表,根據用戶擁有的權限,在 jsp頁面上進行判斷,然后根據判斷結果分別顯示 “讀取”、“增加”、“刪除”、“更新”等按鈕,實現精粒度的權限控制。

在編程過程中,一個用戶可能擁有多個角色,同時也可能擁有單獨的用戶授權。此時,要先從數據庫的 T_ACL表中查詢出該用戶擁有的角色的權限列表,再查詢出該用戶擁有的單獨權限列表,對它們進行“與”運算,最后形成該用戶的權限列表。在這一過程中,角色所擁有的權限可能會與用戶單獨擁有的權限重復,但通過 “與”運算后,就可以剔除重復的權限。

2.3 編程實現

B/S結構的軟件系統中,一般具有導航菜單,每一個導航菜單實現相應的功能。例如在 “地震臺站管理系統”中,導航菜單具有 “臺站管理”、“儀器管理”、“人員管理”、“用戶管理”、“角色管理”等一級菜單,這些導航菜單對應軟件中的模塊,每個模塊完成相應的功能。每一個導航菜單都具有菜單名稱、入口地址(類似于網址)等信息,它們存放在數據庫的模塊管理數據表中。在讀寫數據庫時,采用 Hibernate與數據庫 “打交道”,權限管理中所用的實體類(也叫 VO類、Pojo類)類圖及其關系見圖 2。

圖 2 權限管理中的實體類類圖及其關系(北京尚學堂科技有限公司,2008)Fig.2 Rights Management in the entity class diagram and their relations(Beijing Shangxue Tang Technology Co.,Ltd.,2008)

在程序設計過程中,筆者采用 Struts2+Hibernate+Spring架構,授權部分使用 DWR框架。由于每個實體都要進行寫入、讀取、更新、刪除、分頁等操作,因此筆者使用 Java的泛型設計了一個 Generic Dao基類,該基類繼承自 Spring提供的Hibernate Dao Support類,可以完成基本的 CRUD、分頁等操作。對 ACL、User、Role等的 Dao操作則設計繼承于 Generic Dao的子類,只要傳入相應的實體即可。同時,為了方便軟件的維護,筆者設計了 Service層,在 Service層完成業務邏輯,并調用Dao層完成對數據庫的操作。前臺與后臺的“溝通”由 Struts2的 Action完成,在 Action中調用Service層的業務邏輯來處理業務需求,然后將處理結果轉發至前臺 jsp頁面。各種 Dao、Service、Action則統一由 Spring容器進行管理。

(1)授權過程:建立角色→對角色進行授權(資源與角色關聯)→將角色分配給用戶(角色與用戶關聯)。建立角色的過程十分簡單,采用Struts2的 Domain模型傳遞參數,Struts2在 Action中會自動根據前臺傳入的角色數據實例化一個Role類,只需要在 Action中調用 role Service(完成對角色數據的 CRUD、分頁等操作)的添加方法將其持久化到數據庫中即可。而授權包含對角色的授權和單獨對用戶授權,當前臺用戶點擊復選框(圖 3)將其選中時,后臺會根據主體標識(角色或用戶)作出判斷,當主體標識為 “角色”時將主體標識(Role)、資源 id、角色 id、對該資源的CRUD權限(一個正整數的低 4位)寫入數據庫;當主體標識為“用戶”時將主體標識(User)、資源 id、用戶 id、用戶對該資源的 CRUD權限寫入數據庫。當取消復選框時,則應從數據庫中刪除以上信息。在實現這一操作時,筆者使用 DWR框架完成授權頁面與后臺業務邏輯 Service層的交互,在不刷新頁面的情況下就可以完成以上操作。

圖 3 精細權限管理在地震臺站管理系統后臺管理中的應用Fig.3 Fine-right management in the Seismic Station Management System

(2)認證過程:驗證用戶登錄→根據用戶 id查找其擁有的角色,從 T_Acl數據表中查找角色擁有的權限→根據角色的權限查詢模塊資源(菜單)列表,同時將權限列表寫入 session→前臺顯示菜單,完成認證過程。在認證過程中,首先檢查用戶登錄是否成功,成功后才查找用戶的權限。

驗證用戶的操作是在 Struts2的 login Action中完成的,如果驗證成功,則調用業務邏輯 Acl Service,從數據庫中檢索出用戶擁有的權限,根據權限從模塊數據表中檢索出模塊信息放入module List,同時將用戶權限放入一個 acl List,然后寫入 session中。最后 login Action轉發到前臺的主頁面,主頁面上用 Struts2的 標簽遍歷 module List,列出主菜單。需要注意的是,只要用戶對某一資源(模塊)具有 CRUD中的任何一個權限,主菜單就要列出相應的菜單,而用戶是擁有 C、D、U還是 R權限,則需在具體的WEB交互頁面上讀取session中用戶的權限列表,決定是否顯示添加、刪除、更新、編輯等按鈕,這就是精細的權限控制。

在實際應用中,前臺主菜單一般都需要美化處理。主界面有左側樹形菜單導航,也有頂部下拉菜單導航,具體采取哪種導航菜單,需根據項目的實際需要決定。而前臺需要什么樣的菜單數據,只需要在 Struts2的用戶驗證的 Action中構造就行了。在“地震臺站管理系統”中,前臺菜單是用 ExtJS框架展示的樹形菜單,所以菜單資源返回的列表數據要轉化成 json字符串。

3 權限管理在地震業務系統中的應用

3.1 應用實例

云南是地震多發地區,通過多年的建設,已形成了國家級、省級及市(縣)級三級地震監測臺站體系。為了提高臺站管理效率,摸清全省的臺站數目、觀測項目、觀測儀器、人員配置等資源,在云南省地震局青年基金的資助下,我們于2006年設計了基于 B/S的云南 “地震臺站管理系統”。該系統的建成,極大地提高了工作效率。在系統運行過程中,因實際工作需要,要求系統增加相應的功能。這時,我們發現原來的權限管理設計不利于管理新增加的需求的權限控制,需要修改的代碼較多。在這種情況下,我們對 “地震臺站管理系統”中的權限管理重新進行評估,并按本文所述的思路及方法重構了原有的代碼,對“地震臺站管理系統”中的各種資源實現了精細的權限管理,并且實現了臺站人員只能刪除或修改自己添加的資料,其余資料只能查看的更為精細的權限控制(圖 3)。

3.2 精粒度權限管理的優點

采用精粒度的權限管理后,提供給客戶的軟件產品可以由客戶定制角色,而不是由程序員將角色及相應權限寫死。對具體用戶的權限也由系統管理員決定。精粒度權限管理還可以實現Web頁面上的“增加”、“刪除”、“更新”、“讀取”的按鈕級的控制,在新的權限管理體系下,“地震臺站管理系統”若需再增加新的需求,只需要編寫新功能的實現代碼,然后將新功能的菜單名稱和入口地址加入到模塊數據表中(具體由菜單管理模塊實現),由管理員對新增的功能菜單進行授權即可,對原有的代碼不作任何修改,這極大地提高了系統的維護效率,節約了系統的維護成本。

4 結語

本文討論了精細的權限管理的實現方法,權限管理在B/S結構的軟件系統中具有舉足輕重的地位。這種權限管理技術在辦公自動化(OA)系統、CMS內容管理系統等各種 B/S的業務處理系統中得到廣泛應用,而采用 Struts2+Hibernate+Spring框架則是當前 Java陣營的主流技術。采用這種精細的權限控制后,由于系統的主頁面的菜單存儲在數據庫中,以后要擴展業務應用時,只需要設計相應的業務邏輯,然后將其入口地址等寫入到數據庫的模塊數據表,不需要修改原來的業務應用就可以達到擴展的目的,真正實現了軟件設計的積木效果,大大提高了軟件的維護效率。因此,這種精細的權限管理技術可以作為B/S軟件系統的一個基本組件,只要是B/S的軟件,都可以在用它來“建造”,使軟件的應用范圍更加廣泛。

北京尚學堂科技有限公司 .2008.OA視頻項目教程權限管理部分[EB/OL].(2008-02-19)[2009-06-12].http://www.very-cd.com/groups/@u2857352/237347.topic.

蔡雪燾 .2006.Hibernate開發及整合應用大全[M].北京:清華大學出版社.

劉敦敏.2004.B/S模式的煙草信息管理系統權限管理的實現[EB/OL].(2004-08-19)[2009-05-15].http://www.tobacco.org.cn/news/dspNews.jsp id=47993.

倪泰山,闕云彩,李祥,等 .2009.基于 B/S結構的地震臺站綜合信息管理系統的設計與實現[J].地震研究,32(1):89-93.

徐會生,何啟偉,康愛媛 .2009.深入淺出 Ext JS[M].北京:人民郵電出版社 .

Realization of the Precise Size of the Managenment of Rights of Software System Based on B/S

NI Tai-shan1,ZHOU Yong-gang2
(1.Earthquke Administration of Honghe Prefecture of Yunnan Province,Mengzi 661100,Yunnan,China)
(2.Earthquke Administration of Yanqing County of Beijing,Beijing102100,China)

Firstly,we introduce the fine granularity of right management ideas and methods in the B/S structure software design.Then using Java language,adopting struts2+hibernate+spring framework combined with technology we realize the right management soft ware system,and applied the technology to the background management of the management system of seismic station of the Earthquake Administration of Yunnan Province.

B/S structure;database; rights management;access control list

TP302.1

A

1000-0666(2010)03-0349-05

2009-10-31.

猜你喜歡
數據庫用戶管理
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
人本管理在我國國企中的應用
現代企業(2015年8期)2015-02-28 18:54:47
主站蜘蛛池模板: 成人国产三级在线播放| 大陆精大陆国产国语精品1024 | 人妻丰满熟妇AV无码区| a级毛片网| 国产最新无码专区在线| 91视频精品| 亚洲毛片在线看| 国产精品熟女亚洲AV麻豆| 亚洲精品男人天堂| 精品人妻AV区| 小蝌蚪亚洲精品国产| AV在线天堂进入| 综合社区亚洲熟妇p| AV老司机AV天堂| 人妻熟妇日韩AV在线播放| 天堂在线www网亚洲| 国产人成在线视频| 成人伊人色一区二区三区| 91人妻日韩人妻无码专区精品| 亚洲欧洲日产国产无码AV| 成人国产精品网站在线看| 一区二区三区四区在线| 国产中文在线亚洲精品官网| 国产精品hd在线播放| 国产丝袜啪啪| 四虎成人精品| 亚洲综合亚洲国产尤物| 免费三A级毛片视频| 又黄又湿又爽的视频| 久久这里只有精品66| 亚洲欧美精品在线| 午夜国产小视频| 亚洲一区毛片| 国产精品吹潮在线观看中文| 亚洲欧美人成电影在线观看| 久久久久国产精品免费免费不卡| 亚洲欧美日韩高清综合678| 亚洲天堂网在线视频| 中文纯内无码H| 亚洲午夜福利精品无码| 国产精品福利在线观看无码卡| 国产欧美专区在线观看| 欧美一区二区三区国产精品| 欧美亚洲中文精品三区| 国产免费精彩视频| 国产丝袜丝视频在线观看| 日韩在线1| 99视频精品在线观看| 国产小视频a在线观看| 日本国产一区在线观看| 国产毛片网站| 亚洲日韩日本中文在线| 狠狠色香婷婷久久亚洲精品| 国产特一级毛片| 澳门av无码| 黄色三级网站免费| 国产另类视频| 久热99这里只有精品视频6| 欧美日本一区二区三区免费| 久久久黄色片| 亚洲天堂自拍| 欧美在线国产| 国精品91人妻无码一区二区三区| 99视频只有精品| 亚洲精品日产精品乱码不卡| 亚洲精品无码成人片在线观看| 亚洲Aⅴ无码专区在线观看q| 成人午夜视频免费看欧美| 亚洲欧美自拍中文| 亚洲色图欧美视频| 无码又爽又刺激的高潮视频| 免费国产高清视频| 91九色最新地址| 国内嫩模私拍精品视频| 天天综合天天综合| 国产乱人伦偷精品视频AAA| 成人av手机在线观看| 性视频一区| 国产95在线 | 日韩无码白| 久久综合丝袜日本网| 欧美日韩一区二区在线免费观看 |