2015-01-01 2 views

ответ

4

ACL не встроен в CakePHP 3, как в CakePHP 2. Теперь он доступен как отдельный плагин.

Цитата http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html

, связанные с ACL классов были перенесены в отдельный плагин. Пароль, Поставщики аутентификации и авторизации, перемещенные в пространство имен \ Cake \ Auth. Вы должны перенести своих провайдеров и хэширов в пространство имен App \ Auth.

Вы можете найти плагин на https://github.com/cakephp/acl, но учтите, что он еще не стабилен.

3

Отличный вопрос, так как Даниэль Кастро сказал, что плагин находится в https://github.com/cakephp/acl.

Та часть, которая отсутствует, чтобы отменить «isAuthorized» в вашем «AppController.php» что-то вроде:

... 
use Acl\Controller\Component\AclComponent; 
use Cake\Controller\ComponentRegistry; 
... 



public function isAuthorized($user){ 
     $Collection = new ComponentRegistry(); 
     $acl= new AclComponent($Collection); 
     $username=$user['username']; 
     $controller=$this->request->controller; 
     $action=$this->request->action; 
     $check=$acl->check($user['username'],"$controller/$action"); 
     return $check; 
    } 

Кто-то мудрее, чем я буду знать лучше, если биты пользователь/действие/контроллер может быть лучше дезинфицировать. Существует множество предупреждений об устойчивости этого плагина и «gotchas» на acl с точки зрения производительности.

Я резка над от 1,3 реализации, это было полезно добавить в AppController «» инициализации информации от http://book.cakephp.org/3.0/en/controllers/components/authentication.html