Chinaunix首页 | 论坛 | 博客
  • 博客访问: 709879
  • 博文数量: 160
  • 博客积分: 8847
  • 博客等级: 中将
  • 技术积分: 1656
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-25 16:46
个人简介

。。。。。。。。。。。。。。。。。。。。。。

文章分类

全部博文(160)

文章存档

2015年(1)

2013年(1)

2012年(4)

2011年(26)

2010年(14)

2009年(36)

2008年(38)

2007年(39)

2006年(1)

分类: 系统运维

2011-03-24 22:29:50

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);

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

阅读(870) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~