rbac php yii,Yii2实用基础学习笔记(十):RBAC

一、写在前面

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'

],

具体位置:

8565ed243451fac07e8423d236227843.png

四、操作

新建RbacController.php控制器。

没有草稿功能,待续......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值