1. 程式人生 > >RBAC許可權管理系統實現思路(一)

RBAC許可權管理系統實現思路(一)

RBAC(Role-Based Access Contro) 是基於角色的許可權訪問控制,系統根據登入使用者的角色不同,從而給予不同的系統訪問許可權,角色的許可權隨角色創立時進行分配。
首先,許可權控制很多系統中都需要,但是不同的系統對於許可權的敏感程度不同,因而許可權的設計實現方式不同,這裡的介紹一個簡單的RBAC許可權管理的Demo。
假定這個系統分為:模組一,模組二,模組三。。。。這裡先講一下做系統的許可權管理時需要做的準備工作。
一,需求分析
明確需求是快速實現系統的基礎,沒有明確的需求你就很可能在做無用功,浪費時間就是浪費生命。最然現在敏捷開發很流行,但是大的框架,方向一定不能錯,否則迭代的成本是無法估計的。
假定該系統根據不同功能模組的操作需要不同的部門和角色來劃分許可權,那麼大致劃分一下部門:部門一、部門二;然後每個部門下有不同的角色:角色一、角色二。二不同的角色具有不同的許可權組合(注意組合,每個許可權是相對獨立的個體,後面涉及到資料表的設計

)。
以上便是最基礎的一個系統需要的許可權了。有的系統可能不需要部門那麼就只涉及許可權和角色。

二,資料庫設計
這些表的設計僅供參考,一些屬性可以忽略,基本屬性可供參考。
角色表:
這裡寫圖片描述
許可權表:
這裡寫圖片描述
角色許可權表:
這裡寫圖片描述
部門表:
這裡寫圖片描述
部門許可權表:
這裡寫圖片描述
使用者表:
這裡寫圖片描述
這裡說明一下,角色和許可權事多對多關係,部門和許可權也是多對多關係。
三、概要設計:
首先理一下,那些地方需要許可權控制,分為以下幾個模組:
1,系統登入,提供正確的使用者名稱和密碼才可以登入系統,未登入系統禁止訪問其他介面。
2,系統主介面展示,根據使用者的角色不同部門不同展示不同的選單選項。
3,防止越過前臺操作後臺。比如指令碼攻擊,或者模擬客戶端傳送請求。
4,防止越權操作。(需要系統前後臺做許可權的校驗)

那麼首先要實現的是一個基本安全的系統,就是未登入禁止訪問其他頁面。
實現的方式有多種,這裡只介紹使用攔截器攔截請求的方式。(你還可以使用過濾器,或者aop)
關於攔截器和過濾器的區別可以檢視:http://blog.csdn.net/phoenix_smf/article/details/79074240
那麼攔截器的目的就是所有從客戶端傳送的請求到服務端都被攔截下來,只有符合要求的才被放行,那麼具體怎麼設計攔截器的操作和配置呢,欲知後事如何,且聽下回分解。