使用 CakePHP 'Acl' 组件
Posted
技术标签:
【中文标题】使用 CakePHP \'Acl\' 组件【英文标题】:using CakePHP 'Acl' component使用 CakePHP 'Acl' 组件 【发布时间】:2010-11-13 00:34:33 【问题描述】:我是 Cakephp 组件的新手。 我已经构建了一个具有登录功能的 CakePHP 应用程序。 我没有使用“Auth”组件,而是使用我的自定义方法进行身份验证。
现在我想在同一个应用程序中使用“Acl”组件,但我无法这样做,因为它还需要“Auth”组件。
是否可以在没有“Auth”的情况下使用“Acl”。 如果有,谁能指点一下?
【问题讨论】:
【参考方案1】:至少根据 Cake PHP 手册,可以单独使用它们。只要您可以将经过身份验证的用户链接到数据库中的 ARO,它就应该可以工作。你可以在这里看到一些关于 CakePHP ACL 的基础知识:http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html,这里有一个关于设置 ACL 的不错的教程:http://bakery.cakephp.org/articles/view/user-permissions-and-cakephp-acl
如果您的数据库中没有用户,那就有点棘手了。只要您可以在登录后检索到具有所需权限的 ARO,就可以了。
【讨论】:
【参考方案2】:是的,这是可能的 - 只要您将您的用户帐户与 ACL 相关联,一切都应该没问题。
假设您的用户使用他们的电子邮件和密码登录,那么您的别名字段中的 ARO 表可以包含电子邮件地址和指向您的用户表 id 的 foreign_id。
一旦您拥有所有 ACO,就可以使用来检查权限
$res = $this->Acl->check(
$us, // user alias (e-mail)
$this->name, // name of the controller
$privilege // privilege i.e. 'read' or '*'
);
return $res;
在 AppController 的 beforeFilter 中调用
【讨论】:
以上是关于使用 CakePHP 'Acl' 组件的主要内容,如果未能解决你的问题,请参考以下文章
cakePHP 权限使用 ACL 并检查模型上的 user_id
如何绕过 CakePHP 中 requestAction 的 ACL 查询?