내 프로젝트에 대한 ACL이 필요합니다. Alexander Romanenko'video Zend ACL에서 내 요구 사항을 충족시키는 것으로 조사되었습니다. 그것은 너무 놀라운 나는이 구현했습니다 :
모델/LibraryAcl.php :Zend ACL - 공개 권한으로 전환
<?php
class Model_LibraryAcl extends Zend_Acl
{
public function __construct()
{
$this ->add (new Zend_Acl_Resource('index'));
$this ->add (new Zend_Acl_Resource('authentication','login'));
$this-> add (new Zend_Acl_Resource('list'),'books');
$this->addRole(new Zend_Acl_Role('user'));
$this->addRole(new Zend_Acl_Role('admin'),'user');
$this->allow ('user','user');
$this->allow ('user','index');
$this ->allow('admin','books', 'list'));
}
}
플러그인/AccessCheck.php는 :
<?php
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract{
private $_acl = null;
private $_auth = null;
public function __construct(Zend_Acl $acl , Zend_Auth $auth){
$this->_acl = $acl;
$this->_auth = $auth;
}
public function preDispatch(Zend_Controller_Request_Abstract $request){
$resource = $request->getControllerName();
$action = $request->getActionName();
$identity = $this->_auth->getStorage()->read();
$role = $identity->role;
if (!$this->_acl ->isAllowed($role,$resource,$action)){
$request->setControllerName('authentication')
->setActionName('login');
}
}
}
내가 원하는 건 모두 가능하다 로그인 페이지 (인증/로그인 -> 컨트롤러 이름 : 인증, 작업 이름 : 로그인)에 액세스 할 수있는 사람 (관리자, 사용자 및 아직 로그인하지 않은 사용자)
업데이트 :
나는 역할을 guest로 사용해야하며이 역할에 대한 권한을 설정해야합니다.