Zend_ACL을 예로 들어 보니이 프로젝트를 어떻게 구성해야하는지 궁금합니다. 물론 예제가 모두 좋고 깔끔하지만 실제 사이트는 훨씬 더 복잡합니다.ACL을 구성하고 관리하는 방법은 무엇입니까?
$acl = new Zend_Acl();
$acl->addRole(new Zend_Acl_Role('guest'));
$acl->addRole(new Zend_Acl_Role('member'));
$acl->addRole(new Zend_Acl_Role('admin'));
$parents = array('guest', 'member', 'admin');
$acl->addRole(new Zend_Acl_Role('someUser'), $parents);
$acl->add(new Zend_Acl_Resource('someResource'));
$acl->deny('guest', 'someResource');
$acl->allow('member', 'someResource');
echo ($acl->isAllowed('guest', 'someResource') ? 'allowed' : 'denied');
내 사이트의 각 컨트롤러/페이지에 어떤 종류의 액세스 검사가있을 경우 전 세계적으로 사용할 수있는 규칙이 필요합니다. 이것은로드시 모든 규칙을 설정하기 위해 방대한 설정 파일이나 클래스를 생성해야한다는 것을 의미합니까? 그게 많은 기억을 낭비하지 않을까요?
그러나 ACL의 목적을 무효로 할 각 컨트롤러에 필요한 규칙 만 설정하면 어떻게됩니까? ACL을 사용하는 주된 이유는 다음과 같이 코드베이스 전체에 권한이 분산되는 것을 피하기 위해서입니다.
Admin_Controller
{
public function action()
{
if($user->role !== 'admin')
{
die('not allowed');
}
}
}
변경 사항은 어떻게됩니까? ACL 규칙이 관리자가 쉽게 권한을 변경할 수있는 데이터베이스에 저장되는 경우 어떻게됩니까? 각 페이지 요청을 모두 다운로드해야합니까? 시스템에 큰 부담을 안겨 주겠습니까?
즉, ACL은 대형 사이트에서 어떻게 작동합니까? 어떤 문제가 발생합니까? 계단식 사용 권한은 어떻게 처리됩니까?