1. 程式人生 > >基於thinkphp的RBAC權限控制

基於thinkphp的RBAC權限控制

名稱 bsp 基於 也有 沒有權限 path 我們 ids images

RBAC Role-Based Access Control

權限控制在後臺管理中是十分常見的,它的模型大體上是下面這張圖的形式

技術分享

我用的字段和上面不一樣,圖只是個示例

一個簡易的權限控制模型只需要3個表就行了

user表:記錄用戶的信息和用戶的角色

->user_id:用戶的id

->user_role_id:用戶的角色信息 0,1,2分別為超級管理員,經理,員工

->其它省略。。。

技術分享

role表:記錄不同的角色信息,和他們擁有的權限

->role_id:角色的id 1為經理,2為員工,0無權限限制

->role_name:角色名稱

->role_auth_ids: 存放權限的id

->role_auth_ac:該角色能夠訪問的頁面

技術分享

auth表:記錄每個權限的具體信息

->auth_id:權限id
->auth_name:權限名稱

->auth_pid:權限的父級權限的id

->auth_c:控制器的名稱

->auth_a:顯示頁面的名稱

->auth_path:用id表示權限的層級關系 0級權限為空,比如用戶管理的id為5(假設它為最高級),那麽它的auth_path為0,禁言用戶為子權限,id為10。那麽它的auth_path為5-10

->auth_level:權限的等級 0為一個目錄下的最高權限,1為次級,2為次次級 如:商品管理(0)->商品列表(1)->添加商品。有些人能查看商品,但不一定能刪除商品

技術分享

當用戶訪問頁面時,先獲取用戶的信息

user表中得到用戶的角色信息,比如得到的是經理 id為1

現在再去角色信息表中獲取,該角色的權限

技術分享

能訪問的權限Id有了,頁面也有了。只要獲取頁面的路由,只要在我的權限內,則能訪問,不再則顯示沒有權限

那麽auth_path表好像沒用到?一開始權限表是空的

我們添加權限的時候產生了id和頁面的名稱

然後再把這些權限給 經理和員工角色,所以他們的表裏面有了對應的信息

然後給每個員工定義經理,員工等角色。。。。。。。

基於thinkphp的RBAC權限控制