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和頁面的名稱
而後再把這些權限給 經理和員工角色,因此他們的表裏面有了對應的信息
而後給每一個員工定義經理,員工等角色。。。。。。。