cakephp中的授权和ACL 3

时间:2015-01-01 06:35:15

标签: authorization acl cakephp-3.0

我搜索文档但在cakephp 3中找不到任何关于ACL实现的内容。 如何在cakephp 3中使用ACL实现授权?

2 个答案:

答案 0 :(得分:5)

在CakePHP 3中没有像在CakePHP 2中那样构建ACL。它现在可以作为单独的插件使用。

  

来自http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html

的报价      

ACL相关的类被移动到一个单独的插件。密码哈希,   身份验证和授权提供程序移动到   \ Cake \ Auth命名空间。您需要移动您的提供商和   也适用于App \ Auth命名空间。

您可以在https://github.com/cakephp/acl找到该插件,但请注意它尚不稳定。

答案 1 :(得分:3)

很好的问题,正如丹尼尔·卡斯特罗所说插件位于https://github.com/cakephp/acl

缺少的部分是在'AppController.php'中覆盖'isAuthorized',例如:

...
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;
    }

如果用户/操作/控制器位可以更好地消毒,那么比我更聪明的人会更清楚。关于这个插件的稳定性和acl的“陷阱”在性能方面有很多警告。

我正在从1.3实现中切换,从http://book.cakephp.org/3.0/en/controllers/components/authentication.html

添加AppController'初始化'信息很有帮助