Yii框架之Rbac
来源:互联网 发布:算法基础第五版答案 编辑:程序博客网 时间:2024/05/22 01:48
Yii框架之Rbac
Yii 提供了两套授权管理器: yii\rbac\PhpManager 和 yii\rbac\DbManager。前者使用 PHP 脚本存放授权数据, 而后者使用数据库存放授权数据。在这里我要讲的是Dbmanager
第一步:以yii框架基础模板为例,要使用yii框架自带的rbac,首先要在config目录下的web.php文件的components数组内加入以下代码:
DbManager使用4个数据库表存放它的数据:
· yii\rbac\DbManager::$itemTable: 该表存放授权条目(译者注:即角色和权限)。默认表名为 "auth_item" 。
· yii\rbac\DbManager::$itemChildTable: 该表存放授权条目的层次关系。默认表名为 "auth_item_child"。
· yii\rbac\DbManager::$assignmentTable: 该表存放授权条目对用户的指派情况。默认表名为 "auth_assignment"。
· yii\rbac\DbManager::$ruleTable: 该表存放规则。默认表名为 "auth_rule"。
第二步:导入yii框架的rbac表
在yii框架中basic\vendor\yiisoft\yii2\rbac\migrations目录下有个
schema-mysql.sql文件,导入数据库即可生成四个表
第三步:在控制器中的写法
★记得先调用$auth = Yii::$app->authManager;
一、添加权限
例:①添加"rbac/index"权限
$createPost = $auth->createPermission('rbac/index');
$createPost->description = 'rbac 首页';
$auth->add($createPost);
二、添加角色
例:②添加"admin"角色
$author = $auth->createRole('admin');
$auth->add($author);
三、给角色赋权限
例:③获取角色,获取权限,给角色赋权限
$author = $auth->getRole('admin');
$quanxian = $auth->getPermission('rbac/index');
$auth->addChild($author,$quanxian);
四、给用户赋角色
例:④获取用户,获取角色,给用户赋角色
$author = $auth->getRole('admin');//获取角色
$auth->assign($author, 6);//第一个参数是角色,第二个参数是用户id
五、获取当前页的控制器和方法
//获取当前控制器名
$controller = Yii::$app->controller->id;
//获取当前方法名
$action = Yii::$app->controller->action->id;
六、检验该用户是否拥有该权限
//第一个参数为用户id,第二个参数为权限;
$auth->checkAccess('35','rbac/index');
七、修改权限(记得先声明use yii\rbac\Permission;)
例:把权限rbac/index修改成rbac/update权限
$permission = new Permission();
$permission->name = trim( 'rbac/update');
$permission->type = '2';
$permission->description = 'rbac 修改';
//第一个参数是要修改的权限(该权限名),第二参数是修改成什么
$auth->update('rbac/index',$permission);
八、修改角色(记得先声明use yii\rbac\Role;)
例:把admin角色修改成home角色
$role = new Role();
$role->name = 'home';
$role->type = '1';
// 第一个参数是要修改的角色(该角色名),第二参数是修改成什么
$auth->update('admin',$role);
九、删除权限(凡是和该权限有关的角色赋权也消失)
例:删除rbac/index权限
//先获取该权限
$quanxian = $auth->getPermission('rbac/index');
///再删除该权限
$auth->remove($quanxian);
十、删除角色(该角色赋权的数据也会被删除)
例:删除admin角色
//先获取该角色
$author = $auth->getRole('admin');
///再删除该角色
$auth->remove($author);
十一、解除角色的某个权限
例:解除admin角色的rbac/Index权限
//先获取要解除的角色
$author = $auth->getRole('admin');
//再获取要解除的权限
$quanxian = $auth->getPermission('rbac/index');
//最后解除绑定
$auth->removeChild($author,$quanxian);
十二、解除用户的某个角色
例:为id为6的用户解除admin角色
//先获取要解除的角色
$author = $auth->getRole('admin');
//最后解除绑定
//第一个参数是要解除的角色,第二个参数是用户id
// $auth->revoke($author,6);
注释:还有规则约束,详解可看手册或百度
- Yii框架之Rbac
- Yii框架RBAC
- yii框架rbac
- yii框架中操作RBAC
- Yii框架RBAC权限管理
- Yii 框架自带rbac (文件版)
- YII RBAC
- YII框架使用SRBAC实现RBAC权限访问控制
- YII2.0框架(五) RBAC基于角色的权限控制源码透析yii\rbac\DbManager
- PHP框架之YII
- yii框架之规则
- 细说Yii的rbac
- yii 权限RBAC
- yii rbac 基础操作
- Yii Rbac权限
- Yii中的rbac
- #yii框架学习之路#yii CUrlManager
- rbac框架
- STM32F103的11个定时器详解
- 书摘《启示录INSPIRED》3完结
- Android API Guide for Media and Camera(五)—— 媒体与相机(Camera API)
- 2016年数据泄露
- jsp的九大内置对象和四个作用域
- Yii框架之Rbac
- python字符串处理方式-python学习笔记29
- 一劳永逸的配置opencv+vs2013
- jQuery的动画-显示和隐藏
- 文件I/O和标准I/O的区别
- js方法链式调用
- node.js的express实现jsonp
- 《计算机算法与数学模型<上>》期末考试试题
- C++ 虚函数,多态的两个例子