来源:http://www.cnblogs.com/gzrhappy/articles/1850572.html
最近用thinkphp做了个项目,客户今天又提了个新要求 管理员分权限管理。以前大楷看过THINKPHP 的RBAC的介绍没仔细研究 ,现在用到了就找个地方把我对RBAC的理解记一下,免得以后忘记了。
先看下官方给的实例所用到的数据表
RBAC 用到了5个数据表
think_user (用户表)
think_role (用户分组表)
think_node (操作节点)
think_role_user (用户和用户分组的对应)
think_access (各个操作和用户组的对应)
这里重点说一下 think_note
think_note 其实就是记录下了整个网站操作对应的 项目名称 模块名称 和 操作名称。
字段name就是当项目,模块或者操作的名称了。
字段PID 记录他们的从属关系,比如某一个模块是属于哪个项目,某个操作属于哪个模块。
字段level 表示该节点的层级 换句话就是说 level=1 为项目 ,level=2为模块 ,level=3就是操作了。
比如说 admin项目,他的PID 就是 0 (项目的PID都是0) level就是1,nane就是admin了,admin项目下面有的user模块,它的level就应该是2,pid就是admin的id, admin下面user模块的add操作,level就该是3了,pid就应该是前面的user对应的ID.
再说下 rbac类的 方法
authenticate($map,$model='')方法 传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息
saveAccessList($authId=null)方法 传入用户的ID 此方法不返回值,只是设置 $_SESSION['_ACCESS_LIST']的值,其中包含了所有该用户对应的用户组的有权限操作的所有节点 $_SESSION['_ACCESS_LIST']['项目名']['模块名']['操作名'],以后判断权限就是判断当前项目,模块和操作是否在 $_SESSION['_ACCESS_LIST']中能找到。s
checkAccess() 方法 检测当前模块和操作是否需要验证 返回bool类型
checkLogin()方法 检测登录
AccessDecision($appName=APP_NAME) 方法 就是检测当前项目模块操作 是否在$_SESSION['_ACCESS_LIST']数组中,也就是说 在 $_SESSION['_ACCESS_LIST'] 数组中$_SESSION['_ACCESS_LIST']['当前操作']['当前模块']['当前操作']是否存在。如果存在表示有权限 否则返回flase。
getAccessList($authId) 方法 通过查询数据库 返回权限列表 $_SESSION['_ACCESS_LIST']的值了。
上面的记录就是 我个人对RBAC的理解。在开发过程中还遇到个问题,我的项目一有一个 ,但是我又想把 几个模块分开管理。想了半天发现AccessDecision($appName=APP_NAME) 是可以传项目名称的。那么 我们先分几个组,也就是LEVEL=1,PID=0的,然后 把模块分组管理。在使用的时候就麻烦点。每个分组都建一个基类,在基类中if (! RBAC::AccessDecision ()) { 手动给 AccessDecision添加参数,就是当前分组的名称。然后属于某个分组的模块就引用这基类。这样就达到了同一项目下 分组管理模块的功能了。
分享到:
相关推荐
ThinkPHP(RBAC)权限管理系统_第11讲_权限管理
thinkphp rbac 实例基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。 在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些...
thinkphp rbac权限控制数据库
需要学习thinkphp rbac的可以好好看看实例,修改conf文件就可以了,数据库直接sql文件
一个Thinkphp实现的RBAC后台权限管理实例,在Admin模块
thinkphp rbac权限源码资源分享
ThinkPHP中RBAC数据库详解_《草根》第2期,对rbac进行多方位讲解
ThinkPHP(RBAC)权限管理系统_第30讲_角色导航菜单加载
ThinkPHP5_RBAC案例,有学习thinkphp5的可以了解一下!
thinkphp3.1 rbac用户角色认证管理 , 可管理项目,模块,方法的类,简易后台
thinkphp中的rbac文档,让你对rbac更加了解!
THINKPHP RBAC 的培训材料,很实用哦啊
ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm ThinkPHP2.1.0 RBAC示例操作演示.chm
ThinkPHP(RBAC)权限管理系统_第6讲_添加角色
网页前端和后台通用的php框架,只需在框架内新增想要的补充功能
ThinkPHP(RBAC)权限管理系统_第5讲_添加角色
ThinkPHP(RBAC)权限管理系统_第9讲_添加权限
教程名称:雪狐ThinkPHP(RBAC)权限管理系统视频教程(30集)课程目录:【】雪狐ThinkPHP(RBAC)权限管理系统11~15【】雪狐ThinkPHP(RBAC)权限管理系统16-20【】雪狐ThinkPHP(RBAC)权限管理系统1~5【】雪狐ThinkPHP...
ThinkPHP函数详解 ThinkPHP函数详解 ThinkPHP函数详解
ThinkPHP(RBAC)权限管理系统_第21讲_角色管理之配置权限