漫談權(quán)限系統(tǒng)之結(jié)尾篇(開源產(chǎn)品、個(gè)人觀點(diǎn)、知識(shí)體系)

          一.  開源產(chǎn)品

          對(duì)開源的產(chǎn)品了解不多,所以也只能大概的談?wù)劊_源的產(chǎn)品中比較知名的有poweraclacegipoweracl從名字就可以看出其是基于ACL模型的,不怎么了解所以在此也不去評(píng)價(jià)了。

          Acegi作為JAVA界知名的權(quán)限系統(tǒng),從其文檔看來(lái)是能滿足上述的權(quán)限系統(tǒng)的所有需求,其reference文檔也對(duì)權(quán)限系統(tǒng)進(jìn)行了系統(tǒng)的歸納,非常的不錯(cuò),建議去看看。

          Acegi中授權(quán)模型以及資源權(quán)限的校驗(yàn)仍然是基于RBAC模型,在數(shù)據(jù)權(quán)限方面也就是在reference文檔中它稱為Domain Object Instance的部分,是基于ACL模型的實(shí)現(xiàn),曾經(jīng)翻閱它此部分的代碼,根據(jù)代碼表現(xiàn)它并不支持Domain Object Instance的權(quán)限的繼承,并且對(duì)于獲取的Domain Object Instance也是沒(méi)法采用分頁(yè)的方式獲取。

          看了Acegi的代碼覺(jué)得其授權(quán)應(yīng)該是比較高效的,但在校驗(yàn)權(quán)限上效率恐怕也會(huì)比較的低,因?yàn)闄?quán)限的繼承是在校驗(yàn)權(quán)限通過(guò)遞規(guī)來(lái)實(shí)現(xiàn)的,雖然引入了緩存機(jī)制但仍然無(wú)法從根本上解決此問(wèn)題,而且此緩存的維護(hù)也不是一件容易的事。

          Acegi的優(yōu)點(diǎn)也不可忽略,作為權(quán)限系統(tǒng)有一個(gè)很容易產(chǎn)生的問(wèn)題就是對(duì)原有系統(tǒng)產(chǎn)生非常大的侵入,并最終導(dǎo)致原有系統(tǒng)與此權(quán)限系統(tǒng)形成了非常強(qiáng)的耦合,Acegi在這點(diǎn)上則做的比較好,通過(guò)使用FilterInterceptor以及AOP Weaver技術(shù)來(lái)盡量保證對(duì)原有系統(tǒng)最少的改動(dòng)。

          二.  個(gè)人觀點(diǎn)

          權(quán)限系統(tǒng)作為各種系統(tǒng)中都需要的一個(gè)子系統(tǒng),具有很廣的需求面,無(wú)論做什么系統(tǒng),首要重要的仍然是需求,盡管權(quán)限系統(tǒng)在各個(gè)系統(tǒng)中都有需求,但仍然是不盡相同,所以首先要明確所面對(duì)的系統(tǒng)到底是一個(gè)什么樣的系統(tǒng),對(duì)于權(quán)限有什么樣的需求,根據(jù)需求可以根據(jù)相應(yīng)的實(shí)現(xiàn)方案來(lái)做出自己的設(shè)計(jì)。

          權(quán)限系統(tǒng)主要由授權(quán)和校驗(yàn)權(quán)限兩大部分組成,授權(quán)效率和校驗(yàn)權(quán)限的效率通常會(huì)產(chǎn)生沖突,個(gè)人覺(jué)得首先要保證校驗(yàn)權(quán)限的效率,畢竟系統(tǒng)需要校驗(yàn)權(quán)限的地方會(huì)非常的多,但授權(quán)動(dòng)作相對(duì)來(lái)講觸發(fā)的會(huì)比較的少。

          從技術(shù)需求上來(lái)講,權(quán)限系統(tǒng)對(duì)外部系統(tǒng)而言最好做到黑盒的效果,為了減少對(duì)外部系統(tǒng)的侵入,在根據(jù)業(yè)務(wù)需求分析的基礎(chǔ)上形成權(quán)限系統(tǒng)的輸入和輸出需求,從通常的功能需求角度來(lái)大致的闡述:

          1.         身份認(rèn)證

          B/S結(jié)構(gòu)的系統(tǒng)中通常通過(guò)增加Filter來(lái)達(dá)到實(shí)現(xiàn)身份認(rèn)證的功能,這樣不會(huì)造成對(duì)原有系統(tǒng)的改動(dòng)。

          2.         授權(quán)模型

          授權(quán)模型則需外部系統(tǒng)根據(jù)此模型建立相應(yīng)的授權(quán)UI以及交互,當(dāng)然,權(quán)限系統(tǒng)本身也可提供默認(rèn)的實(shí)現(xiàn)方式。

          3.         資源權(quán)限校驗(yàn)

          在資源權(quán)限的校驗(yàn)上可通過(guò)ProxyBefore Interceptor的方式來(lái)做到對(duì)資源操作的權(quán)限控制。

          4.         數(shù)據(jù)權(quán)限校驗(yàn)

          在很多時(shí)候需要區(qū)分好數(shù)據(jù)權(quán)限和業(yè)務(wù)邏輯,不要將業(yè)務(wù)邏輯形式的數(shù)據(jù)控制也借用數(shù)據(jù)權(quán)限來(lái)實(shí)現(xiàn),數(shù)據(jù)權(quán)限的引入很容易對(duì)現(xiàn)有的系統(tǒng)模塊造成影響,在此塊的設(shè)計(jì)上要特別注意避免造成對(duì)原有系統(tǒng)模塊過(guò)多的侵入。

          5.         權(quán)限校驗(yàn)的體現(xiàn)

          在權(quán)限校驗(yàn)的體現(xiàn)上基本主要是表現(xiàn)在菜單、按鈕以及數(shù)據(jù)的顯示上,菜單、按鈕通常通過(guò)標(biāo)簽的方式來(lái)控制,數(shù)據(jù)的顯示控制則需結(jié)合數(shù)據(jù)權(quán)限校驗(yàn)部分來(lái)實(shí)現(xiàn)。

          到現(xiàn)在為止也做了幾個(gè)權(quán)限系統(tǒng)了,目前仍然沒(méi)做出讓自己滿意的權(quán)限系統(tǒng),此文作為拋磚引玉的文章,也希望大家能夠給出自己所做的解決方案。

          三.  涉及的知識(shí)體系

          根據(jù)上面的描述以及結(jié)合自己的經(jīng)驗(yàn),形成搭建權(quán)限系統(tǒng)所需的知識(shí)體系:

          權(quán)限系統(tǒng).jpg
          圖表
          6 權(quán)限系統(tǒng)知識(shí)體系

          posted on 2005-10-14 20:17 BlueDavy 閱讀(3780) 評(píng)論(3)  編輯  收藏 所屬分類: 系統(tǒng)設(shè)計(jì)

          評(píng)論

          # re: 漫談權(quán)限系統(tǒng)之結(jié)尾篇(開源產(chǎn)品、個(gè)人觀點(diǎn)、知識(shí)體系) 2005-10-16 10:21 benlueis

          請(qǐng)問(wèn)在.net框架下有什么比較好的權(quán)限安全框架  回復(fù)  更多評(píng)論   

          # re: 漫談權(quán)限系統(tǒng)之結(jié)尾篇(開源產(chǎn)品、個(gè)人觀點(diǎn)、知識(shí)體系) 2005-10-16 20:47 風(fēng)

          ads  回復(fù)  更多評(píng)論   

          # re: 漫談權(quán)限系統(tǒng)之結(jié)尾篇(開源產(chǎn)品、個(gè)人觀點(diǎn)、知識(shí)體系) 2005-11-17 22:10 Jesse

          同問(wèn),.NET下有什么較好的權(quán)限管理系統(tǒng)?  回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統(tǒng)計(jì)

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 义马市| 梅河口市| 肥城市| 余干县| 宕昌县| 左云县| 香港 | 海伦市| 敖汉旗| 长泰县| 安岳县| 赤壁市| 九江市| 漳州市| 全南县| 大同市| 犍为县| 蓬莱市| 崇文区| 醴陵市| 栾城县| 潮安县| 印江| 石狮市| 宁晋县| 九台市| 城口县| 赤峰市| 孝义市| 广东省| 资源县| 浪卡子县| 和政县| 阜康市| 临夏县| 尼勒克县| 象山县| 张家港市| 台州市| 五大连池市| 彰武县|