2012-03-01 87 views
1

我正在使用cakePHP的isAuthorized()函数来检查用户是否被授权执行控制器操作,但是我遇到的奇怪问题是我的其他控制器操作的权限被阻止来自用户。我只是这样做:奇怪的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。但是当我这样做时,用户也失去了我控制器中其他操作的权限。任何想法这有什么问题?

谢谢

+0

你在哪里设置'$ user_id_logged_in'? – 2012-03-01 23:25:36

+0

$ user_id_logged_in就等于'$ this-> Auth-> user('id');' – user765368 2012-03-01 23:26:50

+0

从我可以从文档中得知,'check()'方法需要3个字符串参数。 '检查($ aro,$ aco,$ action =“*”)'。你可以看到[这里](http://api20.cakephp.org/class/acl-component#method-AclComponentcheck)。 – 2012-03-01 23:36:19

回答

0

我认为这个问题是这样一个事实:你不回来在isAuthorized()到底有什么价值,所以蛋糕假定它是false,因此拒绝访问一切。

如果您不想授权访问其他功能(或者将它们添加到Auth中的'允许'列表中),请尝试在函数的末尾添加一个return true;