温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

thinkPHP的RBAC权限管理

发布时间:2020-06-02 09:57:03 来源:网络 阅读:607 作者:xmyID 栏目:web开发

thinkphp自带一个权限类:RBAC.class.php,里面有生成表的create table语句,也就是它的数据库设计,还有一些方法,比如getAccessList(),可以根据管理员ID号获得权限节点。

1、涉及到的表有五个,为了方便理解,可以总结为:

用户表(user):顾名思义,就是用户了,比如admin、张三、李四、王五

角色表(role):顾名思义,就是定义好的角色,比如财务管理员、文章管理员、产品管理员

用户角色关系表(user_role):顾名思义,就是将用户和角色对应起来的表,看它的表结构,只有role_id(角色id)和user_id(用户id)两个字段
节点表:这个表比较特殊一点,直接列出字段和说明比较好理解

字段idnametitlestatusremarksortpidlevel
解释

节点名称,一般为:项目名称(入口文件中定义的项目名称)、Action(模块)名称、Function(方法)名称

如果系统存在分组,那么需要填写,分组名称,如:Home、Admin

节点标题

状态,1,0


注释

排序

父ID,顶级:0

等级:1、2、3…

例子1
Information


信息资讯管理

1

中心门户网站

NULL
1
2

角色节点表(access):权限控制,也叫权限表,就是该角色(role)能控制哪些节点(node)。level字段对应node表的level字段。

这样就好理解了,其实就是用户、角色、节点三块。

先定义某个角色有权操纵某些节点,就是role表(角色)和node表(节点)和access表(权限)三个表的关系,这是核心部分,access又是核心中的核心。

然后,用户表可以单独和角色表挂钩,这就是user表和role表和user_role表的关系。

这样,就间接定义了哪些用户可以操纵哪些节点(模块)。
2、实际运行的时候,用户的所有可以操作的节点,可以记录到session当中,比如在初始化方法中写下这一句:

$_SESSION[‘rbac’]=RBAC::getAccessList($adminId);

这样打印session的时候,可以看到

[rbac] => Array

(

[ADMIN] => Array

(

[INFORMATION] => Array

[ADD] => 1

[MODIFY] => 2

[DEL] => 3

[PRODUCT] => Array

...

类似这样的数组结构。

最后需要注意的一点是RBAC的配置语句,可以到网上或者官网查看相关的例子。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI