2012-03-01 2 views
1

나는 cakePHP의 isAuthorized() 함수를 사용하여 사용자가 컨트롤러 작업을 실행할 수있는 권한이 있는지를 확인하고 있지만 이상한 문제는 다른 컨트롤러 작업의 사용 권한이 차단되었다는 것입니다 뿐만 아니라 사용자로부터. 난 단지이 일을 해요 : 내가 로그인 한 사용자가 작업 my_action을 실행할 수있는 권한이 있는지 확인하려면이상한 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; 
    } 
} 

. 하지만 이렇게하면 사용자가 내 컨트롤러의 다른 작업에 대한 사용 권한을 잃게됩니다. 어떤 생각이 잘못된거야?

+0

어디에서'$ user_id_logged_in'을 (를) 설정하고 있습니까? –

+0

$ user_id_logged_in은'$ this-> Auth-> user ('id');와 같습니다. – user765368

+0

문서에서 알 수 있듯이'check()'메소드는 3 개의 문자열 매개 변수를 취합니다. 'check ($ aro, $ aco, $ action = "*")'. [여기] (http://api20.cakephp.org/class/acl-component#method-AclComponentcheck)를 볼 수 있습니다. –

답변

0

나는 문제가 당신이 isAuthorized()의 마지막 값을 반환하지 않는 있다는 사실에 생각 감사, 그래서 케이크는 false이고, 따라서 다른 모든 것들에 대한 액세스를 거부 가정합니다.

다른 기능에 대한 액세스를 인증하는 데 관심이 없거나 인증의 '허용'목록에 추가하려는 경우 기능 끝에 return true;을 추가하십시오.