什么是rbac ?
rbac是就是基于角色的访问控制。
yii提供一套基础的底层接口,我们知道,rbac经历好几个阶段,从rbac0到rbac3,从基础的用户、角色、权限,到动态的rbac处理模式,再到现在的权限继承,解决复杂的多页面元素权限分配。
总而言之,rbac有三个特性。
1. 基础:
角色、权限、用户 三大体系。
2. 权限继承:
角色派生原则,一个角色可以派生多个低权限角色。例如:总经理 =》经理、副经理、营运等
3. 权限分配:
权限分配必须从基础权限到高级权限,如果想拥有高级权限必须现拥有基础权限。例如:一个系统,我想拥有所有的权限。首先,我们必须现拥有查看所有菜单和子菜单的权限,然后,在拥有页面元素操作的权限,即增、删、改、查及其他。
yii提供的接口,实现了rbac的基础功能,路由的控制、页面元素和菜单的显示、隐藏等。作为合格的程序员,思想的层次有时候决定你的技术层次。因为yii提供了基础,那么我们可以在它的接口上结合具体项目需求去拓展rbac的功能。
具体如下:
我需要一个菜单表,来存储的模块,以垂直分表 的形式,实现无限极目录。
表字段: name(名称:primary key) route(路由) pid(父ID) ...
此表以三级联动,动态的添加权限、角色,记录模块的层次等级,菜单=》子菜单=》功能、页面元素。
例如:
权限管理 伪路由:permission/index 父ID 0
添加权限: 权限:permission/index 类型: 1
添加角色: 权限管理 类型 : 2
绑定权限: 权限管理 permission/index
角色分配: 角色: 总经理 权限: 权限管理
用户权限: admin 总经理
也许大家可能看不懂,但是如果熟悉yii底层rbac基础接口,就容易理解啦,因为yii提供了现有的一套完善的rbac权限逻辑,所以,我们只需要在其基础上去拓展。 这里需要在添加一个数据表格role表,用于客户端角色分配,客户端只需要去创建角色,并分配好角色权限,便可绑定用户。这里存在一个问题,就是刚开始说的模块化系统中,功能按钮过多问题。所以,我们一个在一个高级角色的基础上,去派生用户所需要的角色。
例如:
总经理
拿到总经理的权限,在其基础上去,分配经理、副经理的角色。分配用户。
-- 每日一博
原文地址:https://www.cnblogs.com/hellow-world/p/9219174.html