thinkPHP的RBAC权限管理
admin
2023-06-21 01:01:27
0

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的配置语句,可以到网上或者官网查看相关的例子。

相关内容

热门资讯

致命管教:一桩熟人社会里的“生... 又是一起“管教“致死案。在甘肃嘉峪关,14岁男孩小超的生命终结在了一场以“心理疏导”为名的暴行中。与...
创维电视断电引起跳闸 电视机自动断电,表示电视机的电源部分电路进入了过载保护状态,是后级电路部分有元件击穿导致,在电视机使...
电饭锅短路引起跳闸怎么修 先去掉短路烧糊的痕迹,然后用胶布包裹重新固定线路然后再测试。然后再用万用表等查看是什么原因导致的跳闸...
冰箱漏电跳闸是什么原因引起的呢 比较常见的原因就是感应漏电,当冷藏柜启动之后,若柜内降温及控制部件均正常,外壳出现漏电现象,就说明冷...
“不舒服”的顶流男星,真的太敏... 你听过“不舒服文学”吗?想想上周日晚的自己,“当时以为是我敏感了,看了这几天大家的分析,我想说当时确...
马桶坐垫坏了怎么换盖怎么安装 马桶坐垫坏了怎么换盖怎么安装:一般马桶垫是与马桶盖连接在一起的,所以只需要找到固定马桶盖的螺丝,用螺...
空调怎么安装-中央空调规范安装... 空调远近驰名,许多人一说到空调第一反映就是空调,因其性能优良、品质优秀、性价比高,在空调界有着不可动...
谁的脸都可能被“偷”!AI短剧... 莫名成为反派角色,“被出演”AI短剧……近期,从知名演员到一般公众,多人发布维权声明,控诉肖像被AI...
加沙民众为遇袭身亡的哈马斯军事... 5月27日,民众在加沙城为遭以军空袭身亡的哈马斯军事领导人穆罕默德·奥达及其家人送葬。新华社发(里泽...
10名季节性零工,没有渡过那座... 露出水面的肯任屯漫水桥。除标注,本文图均为澎湃新闻记者葛明宁拍摄那两天,广西环江县洛阳镇永权村肯任屯...