posts - 193,  comments - 520,  trackbacks - 0

          一、???????????? 考慮實(shí)現(xiàn)

          1、? 系統(tǒng)權(quán)限考慮繼續(xù)采用原先實(shí)現(xiàn)方式,在構(gòu)造功能樹和樹狀菜單時(shí)作出權(quán)限判斷;

          2、? 數(shù)據(jù)庫(kù)操作權(quán)限考慮應(yīng)用 Acegi 擴(kuò)展,在業(yè)務(wù)層對(duì)相應(yīng)的瀏覽 / 增加 / 修改 / 刪除的業(yè)務(wù)方法進(jìn)行攔截;

          3、? 行級(jí)數(shù)據(jù)權(quán)限考慮采用 AOP 的方式在用戶訪問相關(guān)資源時(shí)根據(jù)用戶權(quán)限動(dòng)態(tài)構(gòu)造 SQL 注入到業(yè)務(wù)方法里,再由業(yè)務(wù)方法傳遞到 DAO 里;

          4、? 列級(jí)數(shù)據(jù)權(quán)限考慮做入頁(yè)面,這里不再討論。

          5、? 大集中模式下的權(quán)限管理,本質(zhì)也是行級(jí)數(shù)據(jù)權(quán)限,即在每次數(shù)據(jù)訪問時(shí)都需要強(qiáng)制判斷用戶所屬部門 Group

          一、 權(quán)限管理詳細(xì)解決方案

          用戶、用戶組、角色設(shè)計(jì)如下:
          Image00000.bmp

          Principal 即為權(quán)限主體

          1、? 系統(tǒng)權(quán)限授權(quán)

          web 頁(yè)面:

          頁(yè)面上顯示兩棵樹:左側(cè)顯示用戶、用戶組和角色樹,右側(cè)顯示功能模塊樹,功能模塊樹的節(jié)點(diǎn)上跟兩個(gè)復(fù)選框,分別是可見 / 可再授權(quán)。點(diǎn)擊用戶、用戶組和角色樹上的節(jié)點(diǎn)對(duì)相應(yīng)權(quán)限主體進(jìn)行授權(quán)。

          很顯然可再授權(quán)權(quán)限包含可見權(quán)限。

          數(shù)據(jù)庫(kù)實(shí)現(xiàn):

          ACL 實(shí)現(xiàn),表設(shè)計(jì)如下:

          資源 ID ,權(quán)限主體 ID ,權(quán)限主體 TYPE ,資源 TYPE ,資源操作權(quán)限,條件查詢語(yǔ)句 queryStr

          說明:

          權(quán)限主體 TYPE? 三種: user/group/role

          資源 TYPE??? ???? 兩種: function/method? 此時(shí)對(duì)系統(tǒng)權(quán)限來說是 function

          條件查詢語(yǔ)句 queryStr??? 數(shù)據(jù)范圍控制 ? 此時(shí)對(duì)系統(tǒng)權(quán)限該字段無(wú)效

          對(duì)象:
          Image00002.bmp

          用戶保存授權(quán)信息時(shí),先刪除該權(quán)限主體 ID 的授權(quán)記錄,再更新。

          2、? 數(shù)據(jù)庫(kù)操作權(quán)限授權(quán)

          這里引入一個(gè)新的對(duì)象:數(shù)據(jù)庫(kù)操作資源對(duì)象 ? DataResource

          表設(shè)計(jì)如下:

          ID NAME parentId resStr resType desc

          說明如下:

          ID

          NAME 資源名稱 例如:新增用戶

          parentId

          resStr? 業(yè)務(wù)方法地址 例如: com.way.sevice.UserService.addUser

          resType 資源類型,分兩種: abstract/detail? 抽象 / 具體

          desc? 描述說明

          例子:

          對(duì)用戶管理進(jìn)行數(shù)據(jù)庫(kù)操作權(quán)限授權(quán)

          新建“用戶管理”做父節(jié)點(diǎn),選擇資源類型為“抽象”

          在“用戶管理”下再依次新增“新增用戶”、“瀏覽用戶”、“修改用戶”、“刪除用戶”四個(gè)子節(jié)點(diǎn),選擇資源類型為“具體”

          如果系統(tǒng)自己來判斷存儲(chǔ)就是葉子節(jié)點(diǎn)是“具體”,其他為“抽象”

          web 頁(yè)面:

          頁(yè)面上顯示兩棵樹:左側(cè)顯示用戶、用戶組和角色樹,右側(cè)顯示數(shù)據(jù)庫(kù)操作資源對(duì)象樹,數(shù)據(jù)庫(kù)操作資源對(duì)象樹的葉子節(jié)點(diǎn)的一級(jí)父節(jié)點(diǎn)上跟一個(gè)數(shù)據(jù)范圍限定 button ,點(diǎn)擊后彈出窗口輸入限定條件;葉子節(jié)點(diǎn)上跟一個(gè)復(fù)選框。點(diǎn)擊用戶、用戶組和角色樹上的節(jié)點(diǎn)對(duì)相應(yīng)權(quán)限主體進(jìn)行授權(quán)

          授權(quán)信息存入 ACL 表中

          資源 TYPE method

          3、? 行級(jí)數(shù)據(jù)權(quán)限授權(quán)

          已在上面做了說明即數(shù)據(jù)范圍限定

          4、? 大集中模式下的權(quán)限授權(quán)

          其實(shí)所謂大集中模式控制的也不過是數(shù)據(jù)范圍,考慮是所有相關(guān)表全部增加 groupId 字段,新增時(shí)添入該字段,讀出時(shí)進(jìn)行判斷

          web 頁(yè)面:

          “組織和用戶管理”模塊中,每個(gè)組織中都允許設(shè)定一個(gè)管理員,一旦設(shè)定管理員,該組織就進(jìn)入大集中模式,即所有該組織的數(shù)據(jù)與其他同級(jí)組織互相隔離,僅上級(jí)組織可見。同時(shí)說明一點(diǎn)的是:該管理員與系統(tǒng)總的管理員權(quán)限一樣,不同的是數(shù)據(jù)范圍僅限制與該組織內(nèi)部。

          綜述:

          實(shí)際的授權(quán)部分采用了 ACL ,所以授權(quán)比較簡(jiǎn)單和直觀

          系統(tǒng)資源和數(shù)據(jù)庫(kù)操作資源分開兩個(gè)表存儲(chǔ),這樣可能會(huì)給用戶帶來不便,也就是授權(quán)時(shí)還需要切換,但這種不便似乎不好解決,因?yàn)橐粋€(gè)是粗粒度的一個(gè)是細(xì)粒度的。

          Image00001.bmp



          http://www.aygfsteel.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
          posted on 2006-07-06 17:47 ronghao 閱讀(3022) 評(píng)論(0)  編輯  收藏 所屬分類: 權(quán)限相關(guān)
          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

          常用鏈接

          留言簿(38)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          常去的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 河南省| 黄冈市| 潜江市| 滦南县| 鄢陵县| 汾阳市| 吴川市| 县级市| 汉川市| 兴安县| 华宁县| 济宁市| 呼伦贝尔市| 桐梓县| 讷河市| 麟游县| 金坛市| 鲁甸县| 岢岚县| 灵璧县| 香港| 武安市| 汤阴县| 淮滨县| 灵山县| 宁都县| 平乐县| 青岛市| 新乐市| 资阳市| 桑日县| 中方县| 大余县| 石家庄市| 吉木乃县| 社旗县| 原平市| 濮阳县| 黄大仙区| 鹤峰县| 靖州|