基於thinkphp的RBAC權限控制

RBAC  Role-Based Access Control3d

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

我用的字段和上面不同,圖只是個示例路由

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

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

->user_id:用戶的idsed

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

 ->其它省略。。。im

 

 

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

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

->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和頁面的名稱

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

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

相關文章
相關標籤/搜索