軟件測試關于權限設計的探討

發表于:2009-09-02來源:作者:點擊數: 標簽:軟件測試設計探討權限
軟件測試關于權限設計的探討 軟件測試工具 關鍵字:權限設計原文:http://expert.csdn.net/Expert/topic/1653/1653829.xml?temp=.2015345 但凡涉及多用戶不同權限的 網絡 或者單機程序,都會有權限管理的問題,比較突出的是 MI S系統。 下面我要說的是MIS系

軟件測試關于權限設計的探討  軟件測試工具

關鍵字:權限設計原文:http://expert.csdn.net/Expert/topic/1653/1653829.xml?temp=.2015345

但凡涉及多用戶不同權限的網絡或者單機程序,都會有權限管理的問題,比較突出的是MIS系統。 

下面我要說的是MIS系統權限管理的數據庫設計及實現,當然,這些思路也可以推廣開來應用,比如說在BBS中用來管理不同級別的用戶權限。 

權限設計通常包括數據庫設計、應用程序接口(API)設計、程序實現三個部分。 

這三個部分相互依存,密不可分,要實現完善的權限管理體系,必須考慮到每一個環節可行性與復雜程度甚至執行效率。 

我們將權限分類,首先是針對數據存取的權限,通常有錄入、瀏覽、修改、刪除四種,其次是功能,它可以包括例如統計等所有非直接數據存取操作,另外,我們還可能對一些關鍵數據表某些字段的存取進行限制。除此,我想不出還有另外種類的權限類別。 

完善的權限設計應該具有充分的可擴展性,也就是說,系統增加了新的其它功能不應該對整個權限管理體系帶來較大的變化,要達到這個目的,首先是數據庫設計合理,其次是應用程序接口規范。 

我們先討論數據庫設計。通常我們使用關系數據庫,這里不討論基于Lotus產品的權限管理。 

權限表及相關內容大體可以用六個表來描述,如下: 
1 角色(即用戶組)表:包括三個字段,ID,角色名,對該角色的描述; 
2 用戶表:包括三個或以上字段,ID,用戶名,對該用戶的描述,其它(如地址、電話等信息); 
3 角色-用戶對應表:該表記錄用戶與角色之間的對應關系,一個用戶可以隸屬于多個角色,一個角色組也可擁有多個用戶。包括三個字段,ID,角色ID,用戶ID; 
4 限制內容列表:該表記錄所有需要加以權限區分限制的數據表、功能和字段等內容及其描述,包括三個字段,ID,名稱,描述; 
5 權限列表:該表記錄所有要加以控制的權限,如錄入、修改、刪除、執行等,也包括三個字段,ID,名稱,描述; 
6 權限-角色-用戶對應表:一般情況下,我們對角色/用戶所擁有的權限做如下規定,角色擁有明令允許的權限,其它一律禁止,用戶繼承所屬角色的全部權限,在此范圍內的權限除明令禁止外全部允許,范圍外權限除明令允許外全部禁止。該表的設計是權限管理的重點,設計的思路也很多,可以說各有千秋,不能生搬硬套說某種方法好。對此,我的看法是就個人情況,找自己覺得合適能解決問題的用。 

先說第一種也是最容易理解的方法,設計五個字段:ID,限制內容ID,權限ID,角色/用戶類型(布爾型字段,用來描述一條記錄記錄的是角色權限還是用戶權限),角色/用戶ID,權限類型(布爾型字段,用來描述一條記錄表示允許還是禁止) 

好了,有這六個表,根據表六,我們就可以知道某個角色/用戶到底擁有/禁止某種權限。 

或者說,這么設計已經足夠了,我們完全實現了所需要的功能:可以對角色和用戶分別進行權限定制,也具有相當的可擴展性,比如說增加了新功能,我們只需要添加一條或者幾條記錄就可以,同時應用程序接口也無須改動,具有相當的可行性。但是,在程序實現的過程中,我們發現,使用這種方法并不是十分科學,例如瀏覽某個用戶所擁有的權限時,需要對數據庫進行多次(甚至是遞歸)查詢,極不方便。于是我們需要想其它的辦法。使用過Unix系統的人們都知道,Unix文件系統將對文件的操作權限分為三種:讀、寫和執行,分別用1、2、4三個代碼標識,對用戶同時具有讀寫權限的文件被記錄為3,即1+2。我們也可以用類似的辦法來解決這個問題。初步的想法是修改權限列表,加入一個字段:標識碼,例如,我們可以將錄入權限標識為1,瀏覽權限標識為2,修改權限標識為4,刪除權限標識為8,執行權限標識為16,這樣,我們通過權限累加的辦法就可以輕易的將原本要分為幾條記錄描述的權限放在一起了,例如,假定某用戶ID為1,庫存表對應的限制內容ID為2,同時規定角色類型為0、用戶類型為1,我們就可以將該用戶具有錄入、瀏覽、修改、刪除庫存表的權限描述為:2,15,1,1。 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97