使用 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 应用程序使用 ACL 或简单权限

如何绕过 CakePHP 中 requestAction 的 ACL 查询?

如何解决 Sign Me Up 插件中的 CakePHP 电子邮件组件错误

cakephp 2 上的自动完成 Ajax

Acl-cakePHP 中组的通用权限