这篇文章主要介绍了thinkPHP3.2使用RBAC实现权限管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在thinkphp3.2中自己集成了RBAC来实现权限管理,RBAC实现类在项目中地址为:ThinkPHP/Librar/Org/Util/Rbac.class.php,其中集成了我们所需的权限管理操作
一:表设计
在thinkPHP的Rbac的的Rbac.class.php文件中一共提供了4张表,还有一张用户表需要你自己去建
如下是我所建的和权限相关的sql
其中的wj_为表前缀,改成你项目中的表前缀
1:权限表:
2:节点表:
3:用户角色表:
4:用户角色关联表:
5:用户表:
二:关于权限操作的常用配置:
你可以在config.php文件的数组中增加:
这样的话我们就可以将我们的所有权限配置放置在config.php同级的user.php文件中,user.php文件配置如下:
三:关于权限操作的常用方法:
1:Rbac::saveAccessList($authId=null);
缓存权限列表,在这个方法可以传递空值的前提是:你在用户登录操作的时候要在 $_SESSION[C('USER_AUTH_KEY')] 中把用户的id保存下来,然后这里会将用户所对应的角色拥有的权限都保存在$_SESSION['_ACCESS_LIST']中
2:Rbac::checkAccess()
判断用户访问的模块和方法是否需要权限认证
3:Rbac::AccessDecision()
断用户是否有访问权限的,即检测当前项目模块操作 是否在$_SESSION['_ACCESS_LIST']数组中,也就是说 在 $_SESSION['_ACCESS_LIST'] 数组中$_SESSION'_ACCESS_LIST''当前控制器'是否存在。如果存在表示有权限 否则返回flase
4:Rbac::checkLogin();
判断用户是否登录,如果未登录则跳转到指定路径
5:Rbac::getAccessList($authId)
通过查询数据库 返回权限列表 $_SESSION['_ACCESS_LIST']的值
6:Rbac::authenticate($map, $model='')
传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息,如果不传model值的话使用配置项中的USER_AUTH_MODEL
四:权限管理简单实现实例:
1:登录:
2:登录成功后的权限校验:
根据如上就可以实现用户角色的权限管理
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。