everysheng 2011-12-03 15:42:44 3280次浏览 5条回复 0 0 0

问题是这样的: 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('*'),
        ),
    );
}

问题出来了,使用用户admin2登陆之后,这个校验不通过。 访问controller始终显示: Error 403 You are not authorized to perform this action.

手动写了一些如下的测试代码: Yii::app()->user->checkAccess('admin') 也返回false。

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

几个相关的数据表中的信息如下: AuthAssignment表中: [attach]517[/attach]

AuthItem表中: [attach]518[/attach]

  • 回复于 2011-12-04 12:20 举报

    我决定去单步调试下。。。

  • 回复于 2011-12-05 19:25 举报

    调试了一下。

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

    但是我assign的时候,确实按照username来做的,于是出现问题。

  • 回复于 2012-05-29 11:23 举报

    真挺有毅力的,顶你

  • 回复于 2012-05-29 13:53 举报

    路过!学习了:lol

  • 回复于 2012-06-05 14:44 举报

    checkAccess($itemName,$userId,$params=array())
    第一个参数应该是operation的名称。

您需要登录后才可以回复。登录 | 立即注册