关于role角色验证的问题请教

问题是这样的:

1、我定义了一个role,通过createrole定义了一个admin的role

2、然后assign了一个用户admin2到这个role上

3、然后在某个controller里面修改accessRules如下




        public function accessRules()

        {

                return array(

                        array('allow', 

                                'actions'=>array('index','view', 'admin','delete','create','update'),

                                'roles'=>array('admin'),

                        ),

                        array('deny',  // deny all users

                                'users'=>array('*'),

                        ),

                );

        }



复制代码

[color="#FF0000"]问题出来了,使用用户admin2登陆之后,这个校验不通过。

访问controller始终显示:

Error 403

You are not authorized to perform this action.

手动写了一些如下的测试代码:

Yii::app()->user->checkAccess(‘admin’)也返回false。[/color]

请各位大大看看问题出在哪里。

几个相关的数据表中的信息如下:

AuthAssignment表中:

2308

1.jpg

AuthItem表中:

2309

2.jpg

调试了一下。

原来是checkaccess的时候,yii传入的参数是user->getid。而我重载了这个getid,返回的是数据表中的ID,而非默认的username了。

但是我assign的时候,却是按照username和rolename来绑定的,于是出现问题。

这里是个小陷阱。。。