2013-02-24 3 views
2

Как использовать ACL Zend, чтобы разрешить доступ определенным пользователям к некоторым действиям в контроллере? Прямо сейчас я знаю, как разрешить пользователю доступ ко всему контроллеру, но я хочу ограничить действия внутри контроллера!Zend ACL разрешает определенные действия

ответ

1

Чтобы разрешить/запретить доступ к определенным действиям, укажите их в методах allow/deny для Zend_Acl.

Третий аргумент в методе Zend_Acl::allow() позволит вам установить определенные элементы управления доступом к определенным действиям на данном контроллере/ресурсе. Например:

<?php 

$acl = new Zend_Acl(); 

// Roles 
$guest = new Zend_Acl_Role('guest'); 
$user = new Zend_Acl_Role('user'); 

// Register the roles with the Zend_Acl 
$acl->addRole($guest); 
$acl->addRole($user, 'guest'); 

// Resources/Controllers 
$indexController = new Zend_Acl_Resource('index'); 
$profileController = new Zend_Acl_Resource('profile'); 

// Add resources/controllers to the Zend_Acl 
$acl->add($indexController); 
$acl->add($profileController); 


// Now set limits of access to the resources. 
// Guests get access to all the actions in the index controller, 
// but to only the login and logout actions in the profile controller. 
$acl->allow('guest', 'index'); 
$acl->allow('guest', 'profile', array('login', 'logout')); 

// Users get full access to the profile controller 
$acl->allow('user', 'profile'); 
Смежные вопросы