background image

array

('allow', 

// 只允许用户名是 admin 的用户执行 admin,delete

 

动作

'actions'=>

array

('admin','delete'), 

'users'=>

array

('admin'), 

), 

//admin 就是指用户名是 admin 的用户,

 

以硬编码的形式分配用户权限。

array

('deny', 

// 

 

拒绝所有的访问。

'users'=>

array

('*'), 

), 
); 

 
关于更多的访问规则的设定请参照官方文件
http:

//www.yiiframework.com/doc/api/1.1/CAccessControlFilter 

好了,现在要开始按照我们自己的需求设置适合自己的权限分配了。我们希望 filter 访问
控制模式能更完美一点,按照常识,我们希望它能按照数据库里 user 表里不同级别用户,
实行不同的授权,而不是用硬编码的形式控制。
 
回到 demo blog,我先对数据库的 tbl_user 表做修改,在原来的基础上加上 role 一项。对原
来的用户信息记录添加 role 的 value 为"管理员"或"一般用户"  

然后依次执行以下 3

 

个步骤:

1. 创建组件 WebUser,它是对 CWebUser 的扩展。
2. 修改 config/main.php 文件。
3.修改 accessRules()。
具体细节如下:
1.WebUser.php 组件代码:
代码如下:
 
<strong><?php 
 

// this file must be stored in: 
// protected/components/WebUser.php 

 

class

 WebUser 

extends

 CWebUser { 

 

// Store model to not repeat query. 
private

 

$_model

 

// Return first name. 
// access it by Yii::app()->user->first_name 
function

 getFirst_Name(){