版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、對對 EMS 權限管理模塊設計權限管理模塊設計1.1. 權限設計概述權限設計概述1.11.1 引言引言隨著Web服務的復雜度增加以及用戶數量和種類的增多, 安全問題在理論及工程上都是一個必須考慮的問題,而權限管理是安全問題中一個很重要的方面。因此本文針對權限做了一個分析。權限可簡單表述為這樣的邏輯表達式:判斷“Who 對 What(Which)進行 How 的操作”的邏輯表達式是否為真。1.21.2 意義意義用戶管理及權限管理一直是應用系統(tǒng)中不可缺少的一個部分系統(tǒng)用戶很多,系統(tǒng)功能也很多不同用戶對系統(tǒng)功能的需求不同出于安全等考慮,關鍵的、重要的系統(tǒng)功能需限制部分用戶的使用出于方便性考慮,系統(tǒng)功
2、能需要根據不同的用戶而定制1.31.3 目標目標直觀,因為系統(tǒng)最終會由最終用戶來維護,權限分配的直觀和容易理解,顯得比較重要,除了功能的必須,更主要的就是因為它足夠直觀。簡單,包括概念數量上的簡單和意義上的簡單還有功能上的簡單。想用一個權限系統(tǒng)解決所有的權限問題是不現實的。設計中將變化的“定制”特點比較強的部分判斷為業(yè)務邏輯,而將相同的“通用”特點比較強的部分判斷為權限邏輯就是基于這樣的思路。擴展,采用可繼承的方式解決了權限在擴展上的困難。引進Group概念在支持權限以組方式定義的同時有效避免了權限的重復定義。2.2. 基于角色的權限管理設計基于角色的權限管理設計( (Role-BasedAc
3、cessControl,RBAC),RBAC)2.12.1 權限管理用例圖權限管理用例圖2.22.2 用例圖描述用例圖描述超級管理員超級管理員:系統(tǒng)中默認的角色,它是系統(tǒng)中擁有最高權限的角色,它不僅能夠管理其他的管理員和用戶,而且還可以對系統(tǒng)中每個模塊的任一功能進行操作、維護。普通管理員普通管理員: 它是由超級管理員創(chuàng)建的, 并授予權限, 它能夠管理系統(tǒng)中大部分的功能,它可以查看所有普通管理員、普通用戶的信息,它只能對由它自己創(chuàng)建的用戶進行編輯、刪除操作,和管理擁有權限的模塊。普通用戶普通用戶:它是系統(tǒng)中最低權限的角色,它只能對自己擁有的權限進行操作,一般情況下,它的權限是對信息的瀏覽和對自己
4、信息的錄入,修改。登陸系統(tǒng)登陸系統(tǒng):根據用戶擁有的權限不同,用戶所能操作的功能多少就不同,所以在登陸系系統(tǒng)悅覘菅瑚軾它挾規(guī)苦理憂別改迂仙魚幣息.挨予板限增劇改査用戶信息,刖配H1色八菅那二凰鎮(zhèn)營理員垂址捺縱管那用戶菅理登陸乘統(tǒng) 其遅禺塊戡理捋能助能的操件對普通用戶進行謖理A普誡管理員統(tǒng)的時候就要對用戶的權限進行判斷。用戶管理用戶管理:這里對本系統(tǒng)的登錄用戶進行維護。包括,新建、刪除、編輯、注銷等;系統(tǒng)初始化的時候,用戶管理中默認只有一個擁有超級管理員角色的用戶,因此在初始化登陸的時候,只能用這個用戶登陸,其他的用戶由這個用戶創(chuàng)建并授予角色。角色管理角色管理:角色是賦予系統(tǒng)用戶的職權名稱。包括,
5、新建、刪除、編輯、注銷等;系統(tǒng)初始化的時候,角色管理中默認只擁有一個超級管理員的角色,其他角色由擁有這個角色的用戶創(chuàng)建并授權。其他模塊其他模塊:其他模塊的每個功能都擁有一個唯一 Id,根據用戶登陸的權限,再確定這些功能是否對用戶開放。3.3. 權限設計思路權限設計思路3.13.1 基于角色的訪問控制基于角色的訪問控制 RBACRBACRBACRBAC 的主要思想是: :權限(PermissionsPermissions)是和角色(RolesRoles)相聯系的,而用戶(UsersUsers)則被指定到相應的角色作為其成員。這樣就使權限的管理大大簡化了。系統(tǒng)的權限控制主要是采用基于角色的訪問控制
6、,把權限綁定到角色上,當用戶要操作權限時,就把角色賦給用戶。而且在需要撤回權限時,只需把角色上的權限撤回就行了。3.23.2 思路思路為了設計一套具有較強可擴展性的權限管理,需要建立用戶、角色和權限等數據庫表并且建立之間的關系,具體實現如下3.33.3 用戶用戶僅僅是純粹的用戶用戶用戶僅僅是純粹的用戶,用來記錄用戶相關信息,如用戶名、密碼等,權限是被分權限是被分離離出去了的。用戶出去了的。用戶(User)要擁有對某種資源的權限,必須通過角色(要擁有對某種資源的權限,必須通過角色(Role)去關聯)去關聯。用戶通常具有以下屬性:編號,在系統(tǒng)中唯一。名稱,在系統(tǒng)中唯一。用戶口令。注釋,描述用戶或角
7、色的信息。3.43.4 角色角色是使用權限的基本單位角色角色是使用權限的基本單位,擁有一定數量的權限,通過角色賦予用戶權限,通常具有以下屬性:編號,在系統(tǒng)中唯一。名稱,在系統(tǒng)中唯一(監(jiān)控人員)注釋,描述角色信息.-(在線監(jiān)控人員)3.53.5 權限權限權限指用戶根據角色獲得對程序某些功能的操作權限指用戶根據角色獲得對程序某些功能的操作,例如對文件的讀、寫、修改和刪除功能,通常具有以下屬性:編號,在系統(tǒng)中唯一。名稱,在系統(tǒng)中唯一-(添柵山改,查)注釋,描述權限信息-允許增加監(jiān)控對象3.63.6 用戶與角色的關系用戶與角色的關系一個用戶一個用戶(User)對應一個角色對應一個角色(Role),一個
8、角色可以被多個用戶使用一個角色可以被多個用戶使用,用戶角色就是用來描述他們之間隸屬關系的對象。用戶(User)通過角色(Role)關聯所擁有對某種資源的權限,例如用戶(User):UserIDUserNameUserPwd1張三xxxxxx2李四xxxxxxRoleIDUserRoleNote(用戶角色注釋)02用戶“張三”被分配到角色“監(jiān)控人員”02用戶“李四”被分配到角色“監(jiān)控人員”從該關系表可以看出, 用戶所擁有的特定資源可以通過用戶角色來關聯。3.73.7 權限與角色的關系權限與角色的關系一個角色一個角色(Role)可以擁有多個權限可以擁有多個權限(Permission),同樣一個權限
9、可分配給多個角同樣一個權限可分配給多個角色。色。例如:角色(Role):RoleUUID(角色UUID)01020304RoleRemark (角色注釋)角色(Role):RoleID(角色編號)01020304RoleName (角色名稱)系統(tǒng)管理員監(jiān)控人員調度人員一般工作人員RoleNote(角色注釋)監(jiān)控系統(tǒng)維護管理員在線監(jiān)控人員調度工作人員工作人員用戶角色(User_Role):UserRoleIDUserID1122RoleName(角色名稱)系統(tǒng)管理員監(jiān)控人員調度人員一般工作人員監(jiān)控系統(tǒng)維護管理員在線監(jiān)控人員調度工作人員工作人員權限(Privilege):PrivilegeUUID
10、 (權限UUID)PrivilegeName(權限名稱)PrivilegeRemark(權限注釋)0001增加監(jiān)控允許增加監(jiān)控對象0002修改監(jiān)控允許修改監(jiān)控對象0003刪除監(jiān)控允許刪除監(jiān)控對象0004察看監(jiān)控信息允許察看監(jiān)控對象角色權限(Role_Privilege):RolePermissionIDRoleUUIDPrivilegeUUIDRole_PrivilegeRemark (角色權限注釋)1010001角色“系統(tǒng)管理員”具有權限“增加監(jiān)控”2010002角色“系統(tǒng)管理員”具有權限“修改監(jiān)控”3010003角色“系統(tǒng)管理員”具有權限“刪除監(jiān)控”4010004角色“系統(tǒng)管理員”具有權限
11、“察看監(jiān)控”5020001角色“監(jiān)控人員”具有權限“增加監(jiān)控”6020004角色“監(jiān)控人員”具有權限“察看監(jiān)控”由以上例子中的角色權限關系可以看出,角色權限可以建立角色和權限之間的對應關系。3.83.8 建立用戶權限建立用戶權限用戶權限系統(tǒng)的核心由以下三部分構成:創(chuàng)造權限、分配權限和使用權限創(chuàng)造權限、分配權限和使用權限。第一步由Creator創(chuàng)造權創(chuàng)造權限限(Permission),Creator在設計和實現系統(tǒng)時會劃分,指定系統(tǒng)模塊具有哪些權限。第二步由系統(tǒng)管理員(Administrator)創(chuàng)建用戶和角色創(chuàng)建用戶和角色,并且指定用戶角色(UserRole)和角色權限(RolePermiss
12、ion)的關聯關系。第三步用戶(User)登陸系統(tǒng),對自己擁有的權限進行管理、使用。4.4. 權限的具體實現模式權限的具體實現模式模式一:用戶模式一:用戶- -角色角色- -權限權限( (最通用的方法最通用的方法) )4.14.1 數據庫結構數據庫結構4.1.1 用戶表:表名:user_control_tab含義:用戶表字段字段字段是否是是否為字段字段名稱類型長度關鍵字空含義說明idbigint8是否編號主鍵,自增uuidbinary16否UUID唯一roleuuidbinary16否角色 UUID對應角色表的 UUIDusernamevarchar16否用戶名只能是數字,字母,下劃線組成us
13、erpwdvarchar16否密碼密碼的長度在 6-16 個字符之間realnamevarchar6否真實姓名要求填寫用戶真實姓名sexint2否性別0:男 1:女phonebigint11否移動電話用戶的手機號碼emailvarchar100否郵箱用戶的郵箱remarkvarchar100是備注4.1.2 角色表:表名:role_tab含義:角色表字段名稱字段類型字段長度是否是關鍵字是否為空字段含義字段說明idbigint8是否編號主鍵,自增uuidbinary16否UUID唯一rolenamevarchar16否角色名稱只能是數字,字母,下劃線組成remarkvarchar100備注4.1
14、.3 權限表:表名:privilege_tab含義:權限表字段名稱字段類型字段長度是否是關鍵字是否疋否為空字段含義字段說明idbigint8是否編號主鍵,自增uuidbinary16否UUID唯一prinamevarchar16否權限名稱只能是數字,字母,下劃線組成extidvarchar100否功能 id頁面功能的 id,唯remarkvarchar100備注4.1.4 角色權限表:表名:role_privilege_tab含義:角色權限表表字段名稱字段類型字段長度是否是關鍵字是否為空字段含義字段說明idbigint8是否編號主鍵,自增roleuuidbinary16否角色 UUID引用角色
15、表的 UUID,唯priuuidbinary16否權限 UUID引用權限表的 UUID,唯remarkvarchar100備注4.24.2 在控制層寫在控制層寫 if/elseif/else 判斷條件判斷條件用戶登入系統(tǒng)后,就通過其角色加載所有可以訪問的頁面,保存到Session,一直到用戶退出系統(tǒng)或者session過期。用戶訪問頁面時,添加一個Dispatcher(tapestry5方式),在這個Dispatcher中解析出頁面地址如/cs/deposit, 和用戶保存在Session里的可訪問頁面作比較,如果存在則繼續(xù),不存在則跳到登入頁面。模式二:模式二:RalasafeRalasafe
16、 第三方組件(圖形界面的形式,簡單易用)第三方組件(圖形界面的形式,簡單易用)安裝、配置與使用手冊:http:/ 可以很好地分離權限與系統(tǒng)本身的功能可以很好地分離權限與系統(tǒng)本身的功能, 讓開發(fā)過程更加關注系統(tǒng)讓開發(fā)過程更加關注系統(tǒng)的核心功能,同時可以很容易做到開發(fā)時的任務劃分,同時使項目代碼的可讀性大大提升的核心功能,同時可以很容易做到開發(fā)時的任務劃分,同時使項目代碼的可讀性大大提升。權限模型的常量定義:一個系統(tǒng)里最常見的需求莫過于權限、角色,我們需要兩個類,一個表明都有什么權限(例3、編寫頁面權限過濾器,例如 PagePermissionFilter,實現對頁面請求的過濾;如:刪除帖子權限、
17、編輯帖子權限,等等);另一個類表明,各個角色都有什么權限。這樣子相當于定義了一個權限和角色模型。攔截器與注解:攔截器(Invocation)在在流行的開源框架中很常見,依賴的技術就是Java的動態(tài)代理。許多流行的框架都提供實現攔截器的接口,可以很簡單就實現一個攔截器,此文不表如何實現。注解(Annotations)是JAVA在5.0后引入的特性,它引入的目的是為了替代一些簡單的配置到java代碼里,而不用原來的xml。注解請求示例:一般的框架,都會有一個controller類,以下用偽代碼表示:publicclassThreadsControllerPriCheckRequired(Membe
18、rPrivilegeIdentity.CREATE_THREAD)publicStringcreateThread()returncreateThread;如代碼中所示,一個controller里的一個method對應一個URL請求(例中所示為創(chuàng)建帖子)。我們只需要在其方法上標注PriCheckRequired(MemberPrivilegeIdentity.CREATE_THREAD),PriCheckRequired就是注解,其傳遞了一個信息MemberPrivilegeldentity.CREATE_THREAD,這也就是前文說的權限類中的創(chuàng)建帖子權限??梢韵胂裨跀r截器里要做的事情:攔截
19、器一般都是實現一個框架提供的接口來實現,常用框架都支持。1根據規(guī)定好的根據規(guī)定好的request請求的參數,取到用戶屬于哪個角色。請求的參數,取到用戶屬于哪個角色。2.根據根據controller中注解,取到當前要判斷的權限。中注解,取到當前要判斷的權限。3.對比用戶角色是否有注解中的權限,如果有,放行,反之攔截。對比用戶角色是否有注解中的權限,如果有,放行,反之攔截。具體的實現過程:攔截器的代碼實現與框架有關:rose框架如何實現攔截器請看http:/code.google.eom/p/paoding-rose/wiki/Rose_Code_Fragment_Interceptor模式四:基于模式四:基于 webworkwebwork 和過濾器實現無代碼侵入的原子級界面權限和過濾器實現無代碼侵入的原子級界面權限修改 webwork 的基類 UIBean 來實現頁面的權限控制:1、首先將頁面的權限定義保存到數據庫或 xml 的配置文件中;2、編寫一個監(jiān)聽器 LoadPagePermissionListener 來從權限的描述文件中,加載權限信息到緩存;4、當用戶請求一個 web 表單時,首先通過.action 去請求,此時.action 被PagePermissionFilter 過濾器攔截到,此過濾器中從用戶所請求的 web 表單對應的 XML權
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全球電子商務物流體系2025年度協(xié)調優(yōu)化合同3篇
- 2025年度大數據公司內部股東股權交易合同4篇
- 互聯網+農業(yè)技術融合-深度研究
- 2025年個人擔保合同模板:個人合同擔保書樣本二零二五版
- 2025年度企業(yè)內部培訓教材采購與研發(fā)合同4篇
- 2025年度農莊特色種植項目租賃合同范本4篇
- 二零二五年度大米進出口貿易代理合同7篇
- 二零二四年外貿公司人事代理外貿業(yè)務員勞動合同3篇
- 二零二五版農業(yè)機械租賃與農村電商合作合同3篇
- 2025年度企業(yè)信用擔保期限與信用評級服務合同2篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 部編版二年級下冊《道德與法治》教案及反思(更新)
- 充電樁項目運營方案
- 退休人員出國探親申請書
- 傷殘撫恤管理辦法實施細則
- 高中物理競賽真題分類匯編 4 光學 (學生版+解析版50題)
- 西方經濟學-高鴻業(yè)-筆記
- 幼兒園美術教育研究策略國內外
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
評論
0/150
提交評論