1

我有访问控制的问题。我有规则:

array('deny', 
    'actions'=>array('index'),
    'expression'=>'Yii::app()->user->isRegistered()',
    'deniedCallback' => array(
        $this->render('//site/info',array(
            'message'=>'You must activate your account.'
        )
    ),Yii::app()->end()), 
),   

功能:

public function isRegistered()
{
    return (Yii::app()->user->isGuest) ? FALSE : $this->level == 1;
}

如果我以管理员身份登录并且我的级别为 3,isRegistered() 返回 false,但 deniedCalback 运行。

如何将其更改为仅在表达式为真时才运行回调?

4

1 回答 1

1

您需要将回调指定为callable。您编写它的方式,它将始终执行您在该数组中的代码。您最好在控制器中编写专用方法。

array('deny', 
    'actions'=>array('index'),
    'expression'=>'Yii::app()->user->isRegistered()',
    'deniedCallback' => array($this, 'accessDenied'),  
),

// ...

public function accessDenied()
{
    $this->render('//site/info', array(
        'message' => 'You must activate your account.'
    ));
    Yii::app()->end(); // not really neccessary
}
于 2013-07-16T20:11:56.933 回答