新聞中心
首先我們要搞清楚一個問題,什么是認(rèn)證,什么是授權(quán)。

認(rèn)證——你是誰(Who)?
認(rèn)證:認(rèn)證(authentication):即對不同的用戶進(jìn)行識別,檢查用戶是否有權(quán)限對那些受限制的界面進(jìn)行訪問,這種稱為認(rèn)證。比如登錄。
授權(quán)——誰(Who),在那個系統(tǒng)(Where),可以做什么(What)?
授權(quán)(authorization):決定用戶可以對哪些功能按鈕進(jìn)行操作,對那些數(shù)據(jù)(數(shù)據(jù)行,數(shù)據(jù)列)進(jìn)行有效的訪問即稱作為授權(quán)。
其中功能操作的授權(quán)稱作為功能權(quán)限。比如下圖:員工A要有 公司知識庫平臺->培訓(xùn)->培訓(xùn)預(yù)算->申請培訓(xùn)->培訓(xùn)列表頁面的【查詢】和【申請】按鈕,同時員工A要有 公司綜合管理平臺 ->信息中心->通知公告->通知公告列表頁面的【發(fā)布】和【查詢】按鈕的操作權(quán)限。如圖所示,在現(xiàn)實(shí)場景中,跨平臺,跨系統(tǒng)的場景比比皆是。
其中數(shù)據(jù)權(quán)限以下圖為例:我們看到下圖用紅色框圈起來了一個數(shù)據(jù)列表。假設(shè)這個數(shù)據(jù)列表為某企業(yè)集團(tuán)的銷售匯總表。
現(xiàn)在客戶提出了如下幾個需求:
1) 銷售總經(jīng)理可以查看所有的匯總數(shù)據(jù)。
2) 大區(qū)經(jīng)理只能查看自己所屬大區(qū)的數(shù)據(jù)。
3) 職位等級在二級以下(包括二級)的只能查看自己所屬區(qū)域交易累計(jì)金額小于1000的數(shù)據(jù)。
4) 只有銷售總經(jīng)理,大區(qū)經(jīng)理能查看聯(lián)系方式。
如此需求,在企業(yè)級ERP開發(fā)中屢見不鮮,為了解決客戶的需求,我們不得不反復(fù)的去修改和發(fā)布代碼,其實(shí)我們可以通過簡單的配置來滿足客戶的需求。這個簡單的配置我們就可以稱之為認(rèn)證授權(quán)系統(tǒng),說到這兒,就簡單的把這個系統(tǒng)的概念引申出來了。
那我們要設(shè)計(jì)這個系統(tǒng),我們要考慮到一些什么因素呢?要做出一個適應(yīng)客戶需求變化的系統(tǒng),必須要具備一個良好的設(shè)計(jì)。
首先,認(rèn)證與授權(quán)系統(tǒng)的架構(gòu)應(yīng)該是一個SOA的架構(gòu)。這兒所用的SOA絕對不是趕技術(shù)的時髦。因?yàn)橐粋€企業(yè)集團(tuán)可能有幾個,甚而幾十個,上百個的子系統(tǒng)。我們不可能為每個子系統(tǒng)都維護(hù)個套用戶表,角色表,以及一套權(quán)限系統(tǒng)。所以要把這個認(rèn)證與授權(quán)的功能給抽出來,做成一個松耦合的子系統(tǒng)。但同時這個子系統(tǒng)要與其它系統(tǒng)進(jìn)行數(shù)據(jù)交互,所以我們要采用一定的技術(shù)手段來與業(yè)務(wù)系統(tǒng)通信,不管是用Web Service還是WCF,其實(shí)目的都只有一個,就是讓認(rèn)證與授權(quán)系統(tǒng)與其它業(yè)務(wù)系統(tǒng)進(jìn)行通信。這樣即實(shí)現(xiàn)了一處維護(hù)多處運(yùn)用的場景,這樣就實(shí)現(xiàn)了系統(tǒng)級的重用,當(dāng)然,采用了SOA的開發(fā),就不得不提SOA的安全,我在這個系統(tǒng)里是使用的c#攔截器機(jī)制,具體的實(shí)現(xiàn)以后有機(jī)會單獨(dú)提出來與大家分享,有感興趣的朋友我們可以建一個群共同交流。
其次,系統(tǒng)的可擴(kuò)展性要強(qiáng),特別要有一個強(qiáng)有力的代碼支撐。比如認(rèn)證授權(quán)這個系統(tǒng),用B/S模式的更好,還是用C/S模式的更好?這個是各圓其說,我做了六年的B/S項(xiàng)目,但是我***還是選擇用C/S的結(jié)構(gòu)來開發(fā),其中的原因以后有時間一一道來。我們來欣賞下現(xiàn)的一個代碼片段:
我把客戶端的驗(yàn)證放在了Model上,如果在B/S架構(gòu)下,我不用重復(fù)的去寫一次JavaScript的驗(yàn)證。常用MVC的朋友都知道在B/S結(jié)構(gòu)下,怎樣用Model的屬性進(jìn)行客戶端的驗(yàn)證了。在C/S結(jié)構(gòu)下,可以通過WPF輕而易舉的實(shí)現(xiàn)客戶端的驗(yàn)證,這樣寫的目的,就達(dá)到了代碼級別的重用。
還有一個比較重要的因素,就是用戶體驗(yàn)。當(dāng)我們的程序設(shè)計(jì)的如何的好,代碼重構(gòu)的怎樣的精練,如果沒有一個好的人機(jī)交互,想必會抹殺很大一批用戶的好感。對我們程序員來說,要設(shè)計(jì)一個好的人機(jī)交互界面,確實(shí)有待提升。我以現(xiàn)在這個系統(tǒng)的UI來說吧,在短短半年的時間里,UI重構(gòu)了三次,***次是用WPF下的Ribbon插件來設(shè)計(jì)的。第二次是用微軟官方示例提供的設(shè)計(jì),其中還包括了動態(tài)翻頁的效果,非常炫。第三次,采用微軟的Metro風(fēng)格設(shè)計(jì)。很明顯每次的設(shè)計(jì)都有質(zhì)的提升。
***個版本的界面:Ribbon。
第二個版本的界面:WPF技術(shù)下實(shí)現(xiàn)的翻頁特效界面。
第三個版本的界面(Metro):采用Prism + MVVM開發(fā)的。
每個界面雖然都丑,但是也各具特色。只是個人的喜好而已。
本文標(biāo)題:企業(yè)級系統(tǒng)的認(rèn)證與授權(quán)設(shè)計(jì)
鏈接地址:http://www.fisionsoft.com.cn/article/cdghjhc.html


咨詢
建站咨詢
