2012-12-04 2 views
0
에서 더 세분화 된 ACO로는

내 제품 테이블 :CakePHP의 - ACL

$group->id = 3; 
$this->Acl->deny($group, 'controllers'); 
$this->Acl->allow($group, 'controllers/Products'); 

$group->id = 4; 
$this->Acl->deny($group, 'controllers'); 
$this->Acl->allow($group, 'controllers/Products/view'); 

그러나 방법 :

select * from products; 
+------+----------------+ 
| id | name   | 
+------+----------------+ 
| 1 | product XYZ | 
| 2 | product XPTO | 
| 3 | procudt ABC | 
| 4 | procudt QWERTY | 
| 5 | procudt 1234 | 
+------+----------------+ 

내가처럼 모델 "제품"에 접근을 일부 사용자 그룹을 허용/거부 할 수 있습니다 일부 그룹이 다음과 같이 특정 제품에 액세스하도록 허용/거부 :

$group->id = 5; 
$this->Acl->deny($group, 'controllers'); 
$this->Acl->allow($group, 'product XYZ'); 

$group->id = 6; 
$this->Acl->deny($group, 'controllers'); 
$this->Acl->allow($group, 'product XPTO'); 
$this->Acl->allow($group, 'product 1234'); 

?

답변

1

행 수준 액세스 제어를 원합니다. CakePHP (일부는 Cake의 ACL 기능을 사용하는 것, 일부는 사용하지 않는 것)에서 그 일을 처리 할 수있는 여러 가지 방법이 있으므로 look around을보고 자신의 상황에 가장 적합한 것을 확인하십시오.

Cake의 박스 ACL 기능은 컨트롤러 작업에 대한 액세스 제어를 구현하고 특정 데이터베이스 행을 구현하지 않도록 설계되었습니다. 데이터의 양에 따라 일을 확인하는 것이 상당히 빠를 수 있습니다. 레코드 레벨에서 액세스를 실제로 확인해야하는지 확인하기 위해 디자인을 재고해야 할 수 있습니다.