浅谈Yii2中rbac的权限管理

RBAC

RBAC权限管理,通过管理角色的权限,赋予用户角色来实现权限管理。通过创建路由权限,来进行管理,实际上可以理解为管理路由的访问权限。

首先,我们需要一个权限管理器的组件

我们需要在config中配置
具体配置方法可以参考http://www.yiichina.com/doc/guide/2.0/security-authorization#rbac

...
'components' => [
    'authManager' =>[
            'class'=>\yii\rbac\DbManager::className()
        ]
]

然后,我们可以通过数据迁移,得到rbac的权限表

在项目根目录下运行:

yii migrate --migrationPath=@yii/rbac/migrations

这些都准备好了,我们可以开始使用rbac了

因为在组件中配置了,我们可以直接使用组件调用方式使用权限管理器

在使用组件的时候都得先获取到权限管理器:

$authObj  = Yii::$app->authManager;

下面通过代码的形式来实现创建权限和角色

//获取权限管理器
$authObj = Yii::$app->authManager;

/**
*  创建权限
*/
//创建权限,并添加描述信息
$permission = $authObj->createPermisson('我是权限的名字');
$permission->description = '我是权限的描述信息';
//添加权限到权限管理器中
$authObj->add($permission);

/**
*  创建角色
*/
//创建角色,并添加描述信息
$role = $authObj->createRole('我是角色的名字');
$role->description='我是角色的描述信息';
//把角色添加到权限管理器中
$authObj->add($role);

//给角色赋予权限
$authObj->addChild($role,$permission);

//给用户添加角色,通过用户的id和角色关联起来
$authObj->assign($role,$userId);
下面介绍一些常用的rbac方法
$auth = Yii::$app->authManager;
//获取权限对象
$permission = $auth->getPermission('权限名');
//获取角色对象
$role = $auth->getRole('角色名');
//删除权限或角色都可以通过remove方法
$auth->remove($permission);
$auth->remove($role);
//通过update方法可以修改权限或角色
$new_permission = $auth -> createPermission('我是新的权限');
$new_role = $auth -> createRole('我是新的角色');
//$name为旧权限或旧角色的名字
$auth -> update($name,$new_permission);
$auth -> update($name,$new_role);

//获取角色拥有的权限,返回值为二维数组,键名为权限名
$permissions = $auth->getPermissionsByRole('角色名');
//获取用户被赋予的角色,通过用户id获取
$roles = $auth->getAssignments($userId);

//删除角色的所有权限
$auth->removeChildren('角色名');
//回收用户拥有的所有角色
$auth->revokeAll($userId);

其余的方法可以查看接口说明。里面有所有的方法
这里写图片描述

我这里总结的就是一些rbac的基本用法,不喜勿喷。谢谢!
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值