Yii2实用基础学习笔记(十):RBAC [ 2.0 版本 ]
一、写在前面
RBAC
,即基于角色的访问控制(Role-Based Access Control)
。
RBAC
支持三个著名的安全原则:最小权限原则,责任分离原则和数据抽象原则。
Yii2
的RBAC
核心文件在@vendor\yiisoft\yii2\rbac目录下,数据表的创建信息在该目录的
migrations` 目录下。
许可(Permission):包括许可标识、许可名称、受控对象、操作标识等。给出了受控对象与操作算子的对应关系。
角色(Role):包括角色标识、角色名称、角色基数、角色可用标识等。是系统角色集,由系统管理员定义角色。
用户(User):包括用户标识、用户姓名、用户登录密码等。是系统中的个体用户集,随用户的添加与删除动态变化。
规则(Rule):与一个角色或者权限关联。一个规则用一段代码代表, 规则的执行是在检查一个用户是否满足这个角色或者权限时进行的。
举个稍微形象点的例子:
对于【编辑】这一个角色,
我们可以给它分配不同的【许可权限】,比如删文章、发文章等。
【许可权限】删文章、发文章分别对应了不同的【规则】,
假设有【用户】editor这个账号,这个账号属于【编辑】这一个角色,它就拥有了删文章、发文章的权限了。
角色和权限都可以按层次组织。特定情况下,一个角色可能由其他角色或权限构成, 而权限又由其他的权限构成。
二、权限数据表
@vendor\yiisoft\yii2\rbac\migrations\schema-mysql.sql
文件中有四张表:
auth_rule:单独存放Rule,跟auth_item中的rule_name字段对应
auth_item:存放Role和Permission,以type字段区别,1为Role,2为Permission
auth_item_child:Role拥有的Permission,一个Role可以有多个Permission
auth_assignment:用户拥有的Role,一个用户可以有多个Role
三、配置RBAC
Yii 提供了两套授权管理器: yii\rbac\PhpManager
和 yii\rbac\DbManager
。
yii\rbac\PhpManager
使用 PHP 脚本存放授权数据, yii\rbac\DbManager
使用数据库存放授权数据。
如果你的应用不要求大量的动态角色和权限管理, 可以考虑使用yii\rbac\PhpManager
。
我们将 @vendor\yiisoft\yii2\rbac\migrations\schema-mysql.sql
文件导入之前一直使用的库 yii2basic
,或者在 yii2basic
库中通过可视化管理工具、手动等方式创建改文件中的数据表。
配置@config/web.php
'authManager' => [
'class' => 'yii\rbac\DbManager'
],
具体位置:
四、操作
新建RbacController.php控制器。
没有草稿功能,待续......
菜鸟CK 北京
注册时间:2015-08-20
最后登录:2020-02-24
在线时长:24小时15分
最后登录:2020-02-24
在线时长:24小时15分
- 粉丝103
- 金钱1110
- 威望110
- 积分2450
共 8 条评论
后续会加上草稿功能,辛苦了!
敢问什么叫草稿功能
@鲁鲁槟 就是在未发布状态下也可以保存。
额,谈不上辛苦了,只是记录自己的学习罢了。
很感谢你的分享,对于我们新手来说很重要,直白易懂,看了你的文章收获不小
求更新,求涨知识
妹的,说好的待续呢
一年过去了
两年过去了
@zhao214611 三年过去了
@zhao214611 三年过去了
@文一子小 兄弟 还没到三年呢
@文一子小 四年过去了
@jialongfei 四年半过去了
@zhao214611 5年过去了
@单人床 还有四个月
@单人床 还有四个月
七年过去了
求更新。。。。。
四年了,朋友,你是转行摊煎饼去了嘛哈哈哈。
我从笔记一看到笔记十,简单易懂,通俗上手,如果再有后续就完美了。。。