基于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和页面的名称

而后再把这些权限给 经理和员工角色,因此他们的表里面有了对应的信息

而后给每一个员工定义经理,员工等角色。。。。。。。

相关文章
相关标签/搜索