Yii RBAC中的大致说明
来源:互联网 发布:软件测试基础视频 编辑:程序博客网 时间:2024/05/21 14:41
以Yii 1.15版本为例:
RBAC机制包含三个表;存放路径在 framework/web/auth/schema.sql;
RBAC中一共包含三种对象,操作(Operation)、 任务(Task) 和 角色(Role);
auth_items
功能
用来记录RBAC中的对象。字段
- name - 存放对象名称,字符串;
- type - 对象类型,(0, 1, 2);
- description - 相关的描述,长字符串;
- bizrule - 长字符串,可以在这里定义一个PHP的代码块,以增强验证的扩展性;
- data - 长字符串,序列化后的数组。用于给bizrule提供参数;
其中 type 字段的值含义为
- 0 - Operation 操作
- 1 - Task 任务
- 2 - Role 角色
auth_assignments
功能
记录 用户->角色 之间的对应关系,将不同的用户分配至不同的角色(用户组)。字段
- itemname - 角色名称,和auth_items中对应,区分大小写;
- userid - 用户ID,须在配置部分中预先定义所对应实际用户表的字段名;
- bizrule - 同auth_items中的代码段;
- data - 同上;
auth_itemchildren
功能
记录 角色->任务 、 角色->操作 和 任务->操作 之间的对应关系。字段
- parent - 父级名称。可以是角色名,也可以是任务名;
- children - 字对象名称。可以是任务名,也可以是操作名;
可以使用手册提供的一些方法,放在某个控制器中执行一次(CLI模式或者浏览器访问都可以)即可;
当然,也可以手动,直接插入记录到数据库中。
可以使用 CWebUser::checkAccess() 来验证,也可以通过 CAccessControlFilter 过滤器。
例如:
当前用户属于 Author 组(Role),需要验证是否有 EditPost 的任务(Task)权限,并且Post模型(CActiveRecord)中的 authorId 为当前用户ID; EditPost 的 bizrule 中包含
开始验证:
$auth = Yii::app()->authManager;$post = Post::model()->find($criteria);
$restricted = !Yii::app()->user->checkAccess(array( 'post' => $post, ));
if(false == $restricted) {
// 验证通过
}else{
// 验证未通过
}
获取当前用户所属的组(Role)时,使用
$cuid = Yii::app()->user->id;$roles = Yii::app()->authManager->getRoles($cuid);
这样得到的结果居然是一个包含CAuthItem对象的数组,每个对象的键名为该CAuthItem的name属性。
所以,如果需要判断某个用户是否在组中,需要使用isset方法。
例
$cuid = Yii::app()->user->id;$roles = Yii::app()->authManager->getRoles($cuid);
if(isset($roles['Administrator']))
{
//当前用户是Administrator的一员
};
转自:http://blog.chinaunix.net/uid-20450127-id-349344.html
0 0
- Yii RBAC中的大致说明
- Yii RBAC中的大致说明
- Yii中的rbac
- YII RBAC
- Yii框架RBAC
- Yii框架之Rbac
- 细说Yii的rbac
- yii 权限RBAC
- yii rbac 基础操作
- yii框架rbac
- Yii Rbac权限
- Yii学习系列之yii大致结构
- yii框架中操作RBAC
- Yii框架RBAC权限管理
- Yii中使用RBAC完全指南
- Yii中使用RBAC完全指南
- Yii中使用RBAC完全指南【转】
- YII添加rights扩展实现RBAC
- 工具类
- JavaScript 面试题汇总(一)
- git将本地仓库上传到远程仓库
- R语言画图
- about cgi, some knowledge
- Yii RBAC中的大致说明
- oracle 11g的dmp 导入到 10g
- android Service详解
- 两个新硬盘对拷要怎样操作
- 一点感悟
- C++primer5.2关系、逻辑操作符
- USRP pl2303串口转USB
- android 在android中教你一行代码判断是不是主线程
- 不带缓冲IO与带缓冲IO的区别分析