【问题标题】:CakePHP 2.x AclCakePHP 2.x Acl
【发布时间】:2014-10-03 15:31:13
【问题描述】:

我使用的是 CakePHP 2.3.6。在一个项目中,我实现了 Acl。我按照官方给出的教程,用cake's shell scripting填充acos表,使用AclExtras插件,然后使用“自定义”initDb函数填充aros_acos表。

现在一切正常,表格已成功填充。所以,我认为我不需要allow()/deny() 函数,我以前用于Authorization。所以我从相应控制器的beforeFilter()函数中删除了这些函数。但是,当我删除它们时,我无法访问整个项目中的任何页面(功能)。

为了填充acos 表,我使用了这个命令:

./Console/cake AclExtras.AclExtras aco_sync

为了填充aros_acos 表,我自定义了initDB() 并将其放入Users 控制器并运行它。

所有表都已填充,一切都很好,但它无法使用在我实现 ACL 之前定义的 allow()/deny() 函数。

我的问题是,如果我使用Acl,如果我将所有AROs 和ACOs 都存储在database 中,如果我在database 中定义所有permissions,那么为什么我需要那些allow()/deny() 功能吗?如果我需要这些,那我为什么要使用 Acl ?如果没有 Acl 实现,我的项目很好,使用 allow()/deny() 函数。

那么,我该怎么办?

谁能帮帮我?

谢谢。

【问题讨论】:

    标签: cakephp authentication authorization acl


    【解决方案1】:

    好的,

    最后我得到了ACL 的工作。我发现它很容易,我只需要知道shellscrpting。我一直都知道它在CakePHP 中实现得很好,我只需要让它在我的项目中工作。

    首先,我们必须从我们的shell/command prompt 中生成PHPCakePHP executable。我是在Windows(7) 做的,稍后会尝试LinuxMAC

    首先,如果您在命令提示符下没有 PHP 可执行文件,请转到 My Computer->Properties->Environment Variables(forgot exact path, but you will get it easily)。然后将此c:\wamp\bin\php\php5.3.13; 粘贴到Environment Variable 中,其中php5.3.13 是特定于版本的。

    之后,将其粘贴到同一位置:cakephp\lib\Cake\Console。您可以将cakephp 文件夹永久复制到您的htdocs/www 以供以后使用。

    现在,在您的命令提示符下运行它:cake bake all,然后按照说明进行操作。您必须有一个数据库,在您的 config.php 文件中配置。

    现在,您应该已经准备好使用新创建的项目了。现在关注CakePHP documentation 获取ACL

    请记住,您希望对所有类型的用户开放哪些功能/方法,通过allow()AppController 或特定控制器明确允许它们。

    假设,您希望 pages/indexusers/loginusers/signUp - 这 3 个页面/功能对所有人开放。所以,allow() 它们在 AppControllerPagesUsers 控制器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多