我搜索文档但在cakephp 3中找不到任何关于ACL实现的内容。 如何在cakephp 3中使用ACL实现授权?
答案 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'初始化'信息很有帮助