- 論壇徽章:
- 0
|
轉(zhuǎn):Bright Zhang
過度的權(quán)限設(shè)計(jì)
權(quán)限設(shè)計(jì),是我所見過的國內(nèi)行業(yè)中唯一一塊過度設(shè)計(jì)了的模塊,其他模塊,大多都被視為對表的增刪改查。從進(jìn)入這個行業(yè)至今,大部分公司的系統(tǒng)權(quán)限管理,都做到完全動態(tài)設(shè)置的,或者在力爭做到這一點(diǎn)。筆者本人也做過C/S下基于控件的完全可配置的樹狀權(quán)限控制系統(tǒng)。但所有這些產(chǎn)品都存在一個問題,權(quán)限子系統(tǒng)被過度設(shè)計(jì)了。客戶所需要的,或者最終用到的,最多只是十之二三。為何會出現(xiàn)這種情況呢,我想大多數(shù)公司或個人都想把權(quán)限做成一個獨(dú)立的,強(qiáng)大的系統(tǒng)支撐模塊,另外一點(diǎn),國內(nèi)客戶對權(quán)限的要求非常簡單,出于以應(yīng)對客戶可能的需求變化,所以想做到一勞永逸?墒牵瑱(quán)限控制,是耦合在業(yè)務(wù)模塊之中的,嵌入在不同層次的額外控制代碼,想做到獨(dú)立于業(yè)務(wù)模塊,又談何容易啊。AOP可以做到捕捉橫切點(diǎn)來加入權(quán)限控制的織入,理論上是完全可行的,可是用AOP來做權(quán)限控制,在面對簡單的權(quán)限控制要求時(shí),似乎有點(diǎn)兒殺雞用牛刀。而在面對復(fù)雜的權(quán)限要求時(shí),沒有嚴(yán)格的約定,過于自由的配置,是可能導(dǎo)致混亂及錯誤的。
這些年來,我也在一直思考權(quán)限問題,在使用微軟技術(shù)做開發(fā)的時(shí)候,我們有沒有盡可能的使用微軟提供的驗(yàn)證以及授權(quán)框架呢。驗(yàn)證和授權(quán)不可能游離于技術(shù)發(fā)展之外,本該簡單的需求及實(shí)現(xiàn),何必復(fù)雜化呢?如果客戶只需要業(yè)務(wù)員錄入訂單,經(jīng)理審核訂單的簡單權(quán)限要求,你又何必要去實(shí)現(xiàn)基于方法甚至控件的權(quán)限控制呢?尤其是我們現(xiàn)在使用Web Service/WCF的時(shí)候,我們完全可以充分利用微軟提供的框架內(nèi)的解決方案。WCF的驗(yàn)證及授權(quán)是個復(fù)雜的問題,在基于不同的binding,不同的客戶端認(rèn)證信息,可以支持多種驗(yàn)證及授權(quán)方式。而且微軟在WCF,WPF,WF之外,還提出了WIF,專門用于處理服務(wù)的安全問題,如果沒有特殊的需求,我們似乎不必要把權(quán)限設(shè)計(jì)得過于精細(xì),粗略的角色,即直接使用windows的用戶組(AD)已經(jīng)可以做到基本的權(quán)限控制要求了。 |
|