。。。。。。。。。。。。。。。。。。。。。。
分类: 系统运维
2011-03-24 22:29:50
一、为了不让表产生重复键的错误,可以在fixtrues加入表名,这样每次测试都会清理表中的数据,从而避免。当然,需要建立与表名对应的fixture文件,并且文件返回一个空的数组。
二、关于PHP中的静态方法和静态属性
1.static关键字可以用来修饰变量、方法(静态方法)
2.不经过实例化,就可以直接访问类中static的属性和static的方法。
3.static 的属性和方法,只能访问static的属性和方法,不能访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。
4.在当前类中如果要访问静态成员可以使用self::关键字进行访问。
5.在类中我们不能使用this关键来访问静态属性,因为静态属性在对象可能还没有实例化之前已经存在。
6.在类中静态方法访问静态属性,使用类名::静态属性名即可调用类中的静态属性。
三、Yii本身提供了三张表,维护授权项目(AuthItem)、授权项目之间的继承关系(AuthItemChild)以及授权项目和用户之间的关系(AuthAssignment)。
四、初期建立授权项目(分为角色role,任务task和操作operation),继承关系,并初始指定了一些授权。如果在业务中要求这些授权,可以再次指定授权,并且如果授权有业务逻辑的话,可以在指定授权的时候,将业务逻辑放在bizRule中。当需要检查用户是否拥有某些授权的时候,可以通过authManger的checkAccess,并把需要检查的业务逻辑的参数放在里面。
五、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);
上下两个授权检查在参数是不同的,看清楚了。