thinkphp RBAC 详解

本文解析了ThinkPHP框架中的RBAC权限管理系统,详细介绍了五个核心数据表的作用及RBAC类的关键方法,如权限验证、保存权限列表等,并提供了一种在同一项目下实现模块分组管理的方法。
来源:http://www.cnblogs.com/gzrhappy/articles/1850572.html

最近用thinkphp做了个项目,客户今天又提了个新要求 管理员分权限管理。以前大楷看过THINKPHP 的RBAC的介绍没仔细研究 ,现在用到了就找个地方把我对RBAC的理解记一下,免得以后忘记了。

先看下官方给的实例所用到的数据表

RBAC 用到了5个数据表

[color=red][b]think_user[/b][/color] (用户表)

[color=red][b]think_role[/b][/color] (用户分组表)

[color=red][b]think_node[/b][/color] (操作节点)

[color=red][b]think_role_user[/b][/color] (用户和用户分组的对应)

[color=red][b]think_access[/b][/color] (各个操作和用户组的对应)

这里重点说一下 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类的 方法

[color=green][b]authenticate[/b][/color]($map,$model='')方法 传入查询用户的条件和用户表的MODEL 返回数组包含用户的信息

[color=green][b]saveAccessList[/b][/color]($authId=null)方法 传入用户的ID 此方法不返回值,只是设置 $_SESSION['_ACCESS_LIST']的值,其中包含了所有该用户对应的用户组的有权限操作的所有节点 $_SESSION['_ACCESS_LIST']['项目名']['模块名']['操作名'],以后判断权限就是判断当前项目,模块和操作是否在 $_SESSION['_ACCESS_LIST']中能找到。s

[color=green][b]checkAccess[/b][/color]() 方法 检测当前模块和操作是否需要验证 返回bool类型

[color=green][b]checkLogin[/b][/color]()方法 检测登录

[color=green][b]AccessDecision[/b][/color]($appName=APP_NAME) 方法 就是检测当前项目模块操作 是否在$_SESSION['_ACCESS_LIST']数组中,也就是说 在 $_SESSION['_ACCESS_LIST'] 数组中$_SESSION['_ACCESS_LIST']['当前操作']['当前模块']['当前操作']是否存在。如果存在表示有权限 否则返回flase。

[color=green][b] getAccessList[/b][/color]($authId) 方法 通过查询数据库 返回权限列表 $_SESSION['_ACCESS_LIST']的值了。



上面的记录就是 我个人对RBAC的理解。在开发过程中还遇到个问题,我的项目一有一个 ,但是我又想把 几个模块分开管理。想了半天发现AccessDecision($appName=APP_NAME) 是可以传项目名称的。那么 我们先分几个组,也就是LEVEL=1,PID=0的,然后 把模块分组管理。在使用的时候就麻烦点。每个分组都建一个基类,在基类中if (! RBAC::AccessDecision ()) { 手动给 AccessDecision添加参数,就是当前分组的名称。然后属于某个分组的模块就引用这基类。这样就达到了同一项目下 分组管理模块的功能了。
数据集介绍:电力线目标检测数据集 一、基础信息 数据集名称:电力线目标检测数据集 图片数量: 训练集:2898张图片 验证集:263张图片 测试集:138张图片 总计:3299张图片 分类类别: 类别ID: 0(电力线) 标注格式: YOLO格式,包含对象标注信息,适用于目标检测任务。 数据格式:JPEG/PNG图片,来源于空中拍摄或监控视觉。 二、适用场景 电力设施监控与巡检: 数据集支持目标检测任务,帮助构建能够自动识别和定位电力线的AI模型,用于无人机或固定摄像头巡检,提升电力设施维护效率和安全性。 能源与公用事业管理: 集成至能源管理系统中,提供实时电力线检测功能,辅助进行风险 assessment 和预防性维护,优化能源分配。 计算机视觉算法研究: 支持目标检测技术在特定领域的应用研究,促进AI在能源和公用事业行业的创新与发展。 专业培训与教育: 数据集可用于电力行业培训课程,作为工程师和技术人员学习电力线检测与识别的重要资源。 三、数据集优势 标注精准可靠: 每张图片均经过专业标注,确保电力线对象的定位准确,适用于高精度模型训练。 数据多样性丰富: 包含多种环境下的电力线图片,如空中视角,覆盖不同场景条件,提升模型的泛化能力和鲁棒性。 任务适配性强: 标注格式兼容YOLO等主流深度学习框架,便于快速集成和模型开发,支持目标检测任务的直接应用。 实用价值突出: 专注于电力线检测,为智能电网、自动化巡检和能源设施监控提供关键数据支撑,具有较高的行业应用价值。
【弹簧阻尼器】基于卡尔曼滤波弹簧质量阻尼器系统噪声测量实时状态估计研究(Matlab代码实现)内容概要:本文围绕“基于卡尔曼滤波的弹簧质量阻尼器系统噪声测量与实时状态估计”展开研究,利用Matlab代码实现对系统状态的精确估计。重点在于应用卡尔曼滤波技术处理系统中存在的噪声干扰,提升对弹簧质量阻尼器系统动态行为的实时观测能力。文中详细阐述了系统建模、噪声特性分析及卡尔曼滤波算法的设计与实现过程,展示了滤波算法在抑制测量噪声、提高状态估计精度方面的有效性。同时,该研究属于更广泛的信号处理与状态估计技术应用范畴,适用于复杂动态系统的监控与控制。; 适合人群:具备一定控制系统理论基础和Matlab编程经验的高校研究生、科研人员及工程技术人员,尤其适合从事动态系统建模、状态估计与滤波算法研究的相关人员。; 使用场景及目标:①应用于机械、航空航天、自动化等领域中对振动系统状态的高精度实时估计;②为噪声环境下的传感器数据融合与状态预测提供算法支持;③作为卡尔曼滤波算法在实际物理系统中应用的教学与科研案例。; 阅读建议:建议读者结合Matlab代码实践,深入理解系统建模与滤波器设计的关键步骤,关注噪声建模与滤波参数调优对估计性能的影响,并可进一步拓展至扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)在非线性系统中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值