posts - 193,  comments - 520,  trackbacks - 0
          一個朋友留言,提了一些關心的問題,這里說說自己的想法(不一定對)。
          問題:
          數據范圍的控制:“事實上不是每個用戶都可以看到所有記錄的。以財務管理為例,部門經理只能查看金額小于1W的數據;而總經理則沒有限制”。象這樣要根據數據的某個字段對數據范圍進行控制,應該實現呢,是通過AOP動態改變執行的SQL嗎?這樣似乎不太可行,如果要執行的SQL特別復雜,那動態改變SQL 就更難了。現在的應用中一般使用hibernate,這樣的話就變成了動態改變HQL,也是難的。
          回答:目前在我的代碼里就是通過AOP動態改變執行的SQL,改變HQL確實很困難,但是改變criteria就比較簡單了。對于特別復雜的sql,我的建議是把這些SQL直接寫到你的業務程序里去,或者單獨配置出來,和ibatis比較類似。

          問題:單條數據ACL權限:由于數據是不斷增加的,所以要對單條數據的ACL權限,不應該是數據已存在,然后再對存在的數據授權,應該是對某種規則進行授權。以你舉的個人通訊錄為例,各人自己維護自己的通訊記錄,數據只對自己可見,要想實現對自己的數據的可再授權,應該是對符合某個規則的數據進行授權,也就是說 “要執行授權操作的人就是數據的擁有者”這是個規則,那是不是應該對這個規則授權呢。
          回答:我理解的和你不一樣。我的理解是這樣的,實際中我把單條數據的權限劃分為擁有、瀏覽、修改、刪除四種權限,用戶擁有哪種權限就可以對數據進行相應哪種操作。“要執行授權操作的人就是數據的擁有者”也可以理解為“要執行授權操作的人就必須有該數據的擁有權限”,這可以理解為一種規則,但我更愿意把它理解為一種習慣,很顯然對習慣授權是沒有意義的。當然這里是存在規則的,這種規則簡單的說是這樣:當我新增一條數據時,哪些人對該條數據擁有擁有的權限,哪些人對該條數據擁有瀏覽的權限,哪些人對該條數據擁有修改的權限,哪些人對該條數據擁有刪除的權限。權限相關記錄會在新增這條數據時根據該規則生成。在上面的例子里,這一規則體現在:各人自己維護自己的通訊記錄,數據只對自己可見。也就是說在用戶新增自己的通訊記錄時,系統同時往權限表里插入了該用戶對該記錄的一個擁有權限記錄。

          問題:數據字段權限:要實現對某個字段的權限控制,那是不是應該所有字段應該有個默認的操作呢,或者默認就是只可以查看,要進行修改的話就必須授權。但是通常整個應用中的字段非常多,這樣是乎不太合理。那是不是可以做成所有字段默認就是可以CRUD的,只有要控制的字段才進行權限判斷。同樣,由于使用 Hibernate來進行持久化,那對字段的控制是不是就變成了對類中屬性的控制。
          回答:數據字段權限一直是一個很難辦的事情,實際上我很傾向于把這個問題推到頁面來解決。其實所有的權限控制最后都是要通過頁面來表現的。其實對字段來說,所需要的權限也很簡單:可見/不可見,只讀/可修改。這樣的話,通過標簽的形式來控制字段的顯示、只讀就顯得很自然。對字段的權限記錄可以放入到數據庫,或者xml中,與具體的pojo類沒有關系,當渲染頁面的時候,由標簽來讀取相關權限記錄并控制顯示。

          問題:角色權限的繼承:角色權限的繼承通過規則來做,這個規則應該怎么設計呢。
          回答:這個問題其實是一個分離關注點的問題。你可以抽象出一個規則接口,這個接口定義了對部門、角色下的用戶而言,哪些權限是可以從部門角色繼承的,繼承幾級,哪些是不可以的。然后再具體實現。更靈活的方式是定義出一個配置文件,運行時可以靈活修改。




          http://www.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)
          posted on 2007-06-05 17:36 ronghao 閱讀(4072) 評論(3)  編輯  收藏 所屬分類: 權限相關

          FeedBack:
          # re: 關于權限系統設計的一些問與答
          2008-03-18 00:25 | leekiang
          字段級別的權限控制,你用標簽去讀取配置,可以做到頁面級別的控制,即客戶可見/不可見,只讀/可修改,但這個并不能容易的做到url級別控制,即防止客戶繞過頁面,模擬提交.
          期待你的回復 。  回復  更多評論
            
          # re: 關于權限系統設計的一些問與答
          2008-04-07 18:20 | ronghao
          @leekiang
          在其他文章里有交代,這些權限控制是結合使用的。  回復  更多評論
            
          # re: 關于權限系統設計的一些問與答[未登錄]
          2011-01-22 11:46 | 學習者
          博主作者、您好!本人希望向您學習一下權限有關的問題、加我的Q:343537050.  回復  更多評論
            
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          關注工作流和企業業務流程改進。現就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 门源| 柯坪县| 吴旗县| 广宗县| 婺源县| 黑水县| 平邑县| 霍林郭勒市| 长武县| 常山县| 太原市| 云南省| 宜兰市| 漳平市| 木里| 锡林浩特市| 平昌县| 吉隆县| 肃宁县| 寿阳县| 曲阜市| 安平县| 怀来县| 页游| 安达市| 大宁县| 绵阳市| 焦作市| 嘉荫县| 清河县| 英德市| 阳东县| 潮州市| 新竹市| 甘泉县| 阿拉善左旗| 资兴市| 麟游县| 克什克腾旗| 江北区| 珲春市|