2011-09-07 2 views
1

이제 ACL 제어 응용 프로그램에서 뭔가를 놓치고 있어야합니다. 내 사용자 모델 belongsTo는 Role이라는 모델입니다. 두 모델 모두에 ACL 동작을 포함 시켰습니다. 두 모델 모두 parentNode 함수가 있습니다. Role에서는 null을 반환합니다. 사용자에서 코드는 다음과 같습니다 : 내 AROS 테이블에서 = 8 ROLE_ID 한 사용자로 로그인하고있어 CakePHP Acl 혼란 - 그룹에 대한 액세스가 거부되었지만 해당 그룹의 사용자는 액세스 권한이 있습니다.

public function parentNode() { 
    if (!$this->id && empty($this->data)){ 
     return null; 
    } 
    if (isset($this->data['User']['role_id'])){ 
     $roleId = $this->data['User']['role_id']; 
    } else { 
     $roleId = $this->field('role_id'); 
    } 
    if (!$roleId){ 
     return null; 
    } else { 
     return array('Role' => array('id' => $roleId)); 
    } 
} 

는, 사용자가 올바른에 대한 ARO의 항목입니다 (9)의 PARENT_ID을 가지고 역할. 나는이 작업을 실행하면

public function permissions(){ 
    $this->autoRender = false; 
    if($this->Acl->check(array('model'=>'User','foreign_key'=>$this->Auth->user('id')),'Countries')){ 
     echo 'User: Allowed<br />'; 
    }else{ 
     echo 'User: Forbidden<br />'; 
    } 
    if ($this->Acl->check(array('model'=>'Role','foreign_key'=>$this->Auth->user('role_id')),'Countries')){ 
     echo 'Role: Allowed'; 
    }else{ 
     echo 'Role: Forbidden'; 
    } 
} 

, 내가 얻을 :

User: Allowed 
Role: Forbidden 

는 사용자 항목이 aros_acos 테이블에 어떤 글이 없습니다

나는 문제를 설명하기 위해 다음과 같은 조치를 만들었습니다. 해당 테이블의 유일한 항목은 Role aros입니다.

누구든지이 문제에 관해 밝힐 수 있습니까?

감사합니다.

편집 - 분명하지 않은 경우를 대비하여 예상되는 동작은 사용자와 역할이이 컨트롤러 ('국가')에 액세스하지 못하도록하는 것입니다.

편집 - 내가 지금처럼 권한을 할당 할 :이 근무하고있는 데이터베이스에 확인한

$this->Acl->deny('City admin','Countries'); 

.

+0

권한을 어디에 할당합니까? 권한 설정에 관한 요리 책을 확인 했습니까? – 8vius

+0

만약 당신이 내 질문에 어쩌면 내가 당신에게 손을 줄 수있는 몇 가지 빛을 비 웠습니다 – 8vius

답변

0

나는 내 질문에 답하지 않았기 때문에 여기서 사지 않을 것이다. 확인 했습니까? this?

표시하지 않기 때문에 실제로는 알 수 없지만 해당 링크에 지정된 방식으로 권한을 설정하고 작업을 허용해야합니다.

+0

고마워, 내가 이것을 포함하도록 내 질문을 편집 내 권한을 할당 않습니다. – Will

+0

컨트롤러/국가에 대한 귀하의 거부에서 '국가'변경 – 8vius

관련 문제