免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2039 | 回复: 0
打印 上一主题 下一主题

Yii技术之 -- 测试RBAC [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:48 |只看该作者 |倒序浏览
MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0

一、为了不让表产生重复键的错误,可以在fixtrues加入表名,这样每次测试都会清理表中的数据,从而避免。当然,需要建立与表名对应的fixture文件,并且文件返回一个空的数组。

二、关于PHP中的静态方法和静态属性

1.static关键字可以用来修饰变量、方法(静态方法)

2.不经过实例化,就可以直接访问类中static的属性和static的方法。

3.static 的属性和方法,只能访问static的属性和方法,不能访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。

4.在当前类中如果要访问静态成员可以使用self::关键字进行访问。

5.在类中我们不能使用this关键来访问静态属性,因为静态属性在对象可能还没有实例化之前已经存在。

6.在类中静态方法访问静态属性,使用类名::静态属性名即可调用类中的静态属性。 

三、Yii本身提供了三张表,维护授权项目(AuthItem)、授权项目之间的继承关系(AuthItemChild)以及授权项目和用户之间的关系(AuthAssignment)

四、初期建立授权项目(分为角色role,任务task和操作operation),继承关系,并初始指定了一些授权。如果在业务中要求这些授权,可以再次指定授权,并且如果授权有业务逻辑的话,可以在指定授权的时候,将业务逻辑放在bizRule中。当需要检查用户是否拥有某些授权的时候,可以通过authMangercheckAccess,并把需要检查的业务逻辑的参数放在里面。

五、bizRule应该是一个返回true或者false的表达式,一般是:

'return expression';表达式的参数是在检查用户是否拥有授权的时候传出去的。

六、例子

(一)建立角色

$auth = Yii::app()->authManager;

$roleOwner = $auth->role('owner');

$roleMember = $auth->role('member');

$auth->createOperation('createIssue');

$auth->createOperation('createProject');

(二)建立角色之间的继承关系

$roleOwner->addChild('member');

(三)指定授权项目到角色

$roleMember->addChild('createIssue');

$roleOwner->addChild('createProject');

(四)建立业务逻辑

...

$bizRule = 'return ....;'; //这个地方千万注意,return包含在一对引号中,结尾必须是以“;

结尾,否则问题很严重哦。

$auth->assign('member',  $userId, $bizRule);

$auth->assign('owner', $userId2);

(五)检查是否拥有授权

Yii::app()->user->checkAccess('createIssue', $params);//这里的$params是一个数组,是传递给业务逻辑中的变量的。

也可以:

Yii::app()->authManager->checkAccess('createIssue', $userId, $params);

上下两个授权检查在参数是不同的,看清楚了。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP