首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP的ACL组件到底有多强?

CakePHP的ACL组件到底有多强?
EN

Stack Overflow用户
提问于 2012-03-29 01:04:01
回答 2查看 1K关注 0票数 0

我在这里和不同的网站上读到过无数次ACL组件是一个非常强大的工具。然而,下一句通常以“然而,蛋糕手册没有很好地记录这一点,所以这就是我正在使用的系统”的版本开始。我是一个编程新手,由于文档的缘故,我也一直在努力学习AclComponent;我不知道到底是什么让Cake如此强大,因为每个人都推荐它,但许多人仍然在使用其他东西。有没有人能推荐一些具体的例子或教程,帮助我更好地理解这个组件?例如,它帮助我避免编写哪些类型的代码,如何限制每个用户而不是整个组的访问,等等?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 01:43:49

Cake的ACL系统非常强大,因为它非常灵活,允许对应用程序的访问进行非常细粒度的控制。大多数人以一种基本的方式使用它,即此用户/组可以访问此控制器方法。虽然这是常见的用例,但您也可以使用它来限制一个模型对另一个模型的create操作的访问。

例如,要限制管理员组仅为PrivateModel模型创建记录,请执行以下操作:

代码语言:javascript
复制
// add aco
$this->Acl->Aco->add(array(
'alias' => 'PrivateModel'
'model' => 'PrivateModel',
'foreign_key' => null
));

// add aro
$this->Acl->Aro->array(array(
'alias' => 'Admin'
'model' => 'Group',
'foreign_key' => 1
));

// allow Admin to read PrivateModel #1
$this->Acl->allow('Admin', 'PrivateModel1', 'create');

// check permission
$allowed = $this->Acl->check('Admin', 'PrivateModel', 'read'); // true
$allowed = $this->Acl->check('Admin', 'PrivateModel', 'create'); // false

“我是否应该使用ACL”的默认答案通常是“否”,因为设置和理解它可能需要一些时间。当我最初甚至对ACL概念或MPTT树一无所知时,Cake的ACL示例足以让我继续下去。

目前,我有一个将组作为AROs的应用程序,ACLComponent使用控制器检查isAuthorized()方法,该方法从登录的用户中提取组,并使用它检查操作是否经过授权。同样,这可能是ACL的最基本方法。

票数 2
EN

Stack Overflow用户

发布于 2012-03-29 10:41:11

正如你已经在你的问题“然而...蛋糕文档”中指出的那样,我完全同意。

我看到我的许多团队成员在过去努力抓住整个Acl,Aro和Aco的概念,蛋糕的文档可能会比解决它增加额外的复杂性。

ACL的真正魔力始于AroAco

代码语言:javascript
复制
ARO (Access Request Object) - They are the entities who request for services. 
for eg. Users, Roles (Admin, Manager, Moderator)

ACO (Access Control Object) - They are the entities which are requested. 
for eg. Posts, Posts->add, Posts->view, Posts->edit

我们可以使用requester行为配置我们的模型,这样每次创建新记录时,它都会自动与相应的Aro同步。

正如jeremyharris所演示的,您可以使用具有相应权限的Aro和Aco映射来限制/控制应用程序的访问控制。

而且,你可以通过使用一个插件Alaxos ACL来简化你的访问控制列表,这个插件确实简化了整个访问控制列表的设置,特别是从用户界面的角度

蛋糕控制台还提供了一个shell,用于初始化数据库以进行ACL设置

代码语言:javascript
复制
cake acl initdb    // cakephp 1.1, from shell with create db setup for acl
$ cake schema create DbAcl    // cakephp 1.2 and above

Markstory还提供了一个名为AclExtras的插件,它提供了一个外壳,可以让acl管理变得更加简单,比如创建aco节点,测试和恢复aco,aro树。这是一个令人惊叹的插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9912351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档