基於thinkphp的RBAC權限控制
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權限控制