奇怪的cakePHP isAuthorized()问题

时间:2012-03-01 23:21:38

标签: php cakephp permissions cakephp-1.3 acl

我正在使用cakePHP的isAuthorized()函数来检查用户是否有权执行控制器操作,但我遇到的奇怪问题是我的其他控制器操作的权限也被用户阻止。我只是这样做:

function isAuthorized()
{
    $user_id_logged_in = $this->Auth->user('id');

    switch($this->action)
    {
        case: 'my_action':

        if($user_id_logged_in)
        {
             // check if user has access to execute controller action
             return $this->Acl->check(array(
                                'model' => 'MyModel', 'foreign_key' => $my_foreign_key), 
                                'controllers/MyController/'.$this->action);
        }
        else
        {
             return false;
        }

        break;
    }
}

我想检查记录的用户是否有权执行操作my_action。但是当我这样做时,用户也会失去对我控制器中其他操作的权限。知道这有什么问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我认为问题在于你没有在isAuthorized()结束时返回任何值,所以蛋糕假定它是false,因此拒绝访问其他所有内容。

如果您对授权访问其他功能不感兴趣,请尝试在函数末尾添加return true;(或者,将它们添加到Auth中的'allow'列表中)。