Acegi實現對象實例級權限控制的方法

          一直以來對于Acegi實現Domain Object Instance的權限控制就比較感興趣,今天抽空大致的看了一下,感覺和我以前提出的數據權限那部分的實現是大致相同的。
          Acegi在Domain Object Instance上采用的是ACL的實現,ACL在實現實例級別的權限控制上確實是非常好的方法,按照ACL的思想我們很容易知道Domain Object Instance的控制需要的是user--->Domain Object Instance的一個列表的維護,這點在Acegi上可以看到采用的就是通過acl_object_identity以及acl_permission這兩張表來實現的,看acl_object_identity表驚喜的發現acegi也是考慮到了domain object instance的權限繼承的實現的,acl_object_identity記錄的是需要控制權限的domain object instance的相關信息,acl_permission記錄的即為用戶對于domain object instance的權限,Acegi做到的其實就是將這些通用的部分做了一個實現,在存儲domain object時它幫忙做了相關的權限信息的存儲,應該說acegi這樣的實現確實是可以做到domain object instance的權限控制,不過感覺在acegi中要去實現對象實例級權限控制還是不那么的方便,配置起來非常的繁瑣,應該基于它做一級提升,在易用性方面。
          而且這種做法在侵入性上仍然是無法避免的,比如需要分頁獲取數據時,必然是要在現在的Dao層次做一個侵入的,盡管這點經過一定的方法(Template Pattern)是可以實現無侵入性的...
          目前感覺在對象實例級別的權限控制上還是沒有非常好的方法...
          曾經考慮過是否可以采用AOP的weaver來實現...
          還有就是在對象實例級別是否為權限控制還是業務規則定義方面是有一定的區分難度的,很多時候很難明白的去標識哪個是數據權限、哪個是業務規則,感覺在這兩點上挺容易發生混淆的現象。

          posted on 2006-02-13 15:38 BlueDavy 閱讀(3789) 評論(1)  編輯  收藏 所屬分類: Java系統設計

          評論

          # re: Acegi實現對象實例級權限控制的方法 2008-05-16 13:06 dssd

          現在在看acegi結合使用的項目,將其擴展,擴展的自己都不知道在干什么?  回復  更多評論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 杨浦区| 沙田区| 太谷县| 通河县| 海盐县| 斗六市| 怀安县| 广水市| 陆川县| 新泰市| 凯里市| 洛隆县| 咸阳市| 昌江| 汕尾市| 洪雅县| 始兴县| 汝城县| 宁远县| 武清区| 东兰县| 新巴尔虎左旗| 乐业县| 永宁县| 灵璧县| 乌恰县| 金坛市| 凤山县| 平罗县| 永宁县| 普洱| 白山市| 辉南县| 丰县| 台中市| 桃园县| 浪卡子县| 福泉市| 茂名市| 开封市| 五莲县|