ThinkPHP的RBAC权限控制

本文介绍了ThinkPHP框架中实现RBAC(Role-Based Access Control)权限控制的详细过程,包括登录验证、RBAC类的使用、权限检测及session的保存。同时,强调了配置文件的设置,如超级管理员定义、权限表结构要求、角色状态等关键点,并提醒在继承Base类的控制器中进行权限验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ThinkPHP的RBAC权限控制:

登录验证:
if($username == C('RBAC_SUPERADMIN')){ //判断是否为超级管理员
session(C('ADMIN_AUTH_KEY'),true); //超级管理员保存为true
}
session(C('USER_AUTH_KEY'),$id); //把用户登录id保存到session中,用于下面检测权限
$rbac = new \Org\Util\Rbac; //导入RBAC类
$rbac->saveAccessList(); //根据用户登录的id检测权限,保存到session中
//var_dump($_SESSION);打印生成的session用于调试

注意:
saveAccessList();检测权限,生成的session为空:
1、如果有超级管理员生成的session,则该函数返回空,
2、注意think_node节点表的level值(1、2、3)层级关系必须正确,
3、注意think_access权限表的node_id必须有从上至下的层级关系(如,每个角色必须有level=1的节点),所以在配置角色权限保存时注意,
4、think_role角色表的status值为1,状态开启

配置文件:定位到Home-Conf-config.php
//Rbac配置
'RBAC_SUPERADMIN' => 'admin', //超级管理员名称
'ADMIN_AUTH_KEY' => 'superadmin', //超级管理员识别
'USER_AUTH_ON' => true, //是否开启验证
'USER_AUTH_TYPE' => 1, //验证类型(1:登录验证 2:时时验证)
'USER_AUTH_KEY' => 'uid', //用户认证识别号
'NOT_AUTH_MODULE' => 'Index', //无需认证的控制器
'NOT_AUTH_ACTION' => '', //无需认证的方法
'RBAC_ROLE_TABLE' => 'think_role', //角色表名称
'RBAC_USER_TABLE' => 'think_role_user', //角色与用户的中间表名称
'RBAC_ACCESS_TABLE' => 'think_access', //权限表名称
'RBAC_NODE_TABLE' => 'think_node', //节点表名称

继承Base类,调用控制器中方法时,先验证是否有权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值