【问题标题】:CakePHP ACL Auth TroubleCakePHP ACL 认证问题
【发布时间】:2012-01-18 23:46:41
【问题描述】:

我喜欢 CakePHP,但无法完全理解 ACL/Auth 主题。其他一切都很好地结合在一起,但是当涉及到这一点时,我迷失了。最重要的是,如果没有解决,我将无法完成我的申请。因此,我非常需要您的帮助。

注意事项:

  • 我尝试了一些可用的插件,但都无济于事。
  • 我使用了在线教程以及 Mariano 最新的 CakePHP 书籍,但没有成功。
  • 我自己试过了,也无济于事

为什么要完成这件事这么难?

这些是我的问题:

  • 在具有多个管理员、用户等的 CakePHP 应用程序中,是否有其他方法可以处理访问权限?
  • 对于 ACL 可能是唯一/最佳方式的可能性,我还能如何解决这个问题?
  • 我可能做错了什么?

【问题讨论】:

    标签: cakephp acl authentication


    【解决方案1】:

    正如您所说,您已经尝试了一些可用的插件,您可能已经尝试了我自己的一个:http://www.alaxos.net/blaxos/pages/view/plugin_acl 它主要是一个图形界面,允许在使用 ACL 权限时设置/拒绝访问操作。

    我的意思是,除了插件本身之外,我还提供了一个非常简单的示例应用程序http://www.alaxos.net/blaxos/pages/view/demo_plugins,它使用了这个插件。如果您安装它并查看代码,它可能会对您有所帮助,因为该应用程序有一些公共部分,以及一些受 ACLComponent 保护的部分。

    【讨论】:

    • 看起来很不错的插件,一会儿我要在我最新的Cake项目中实现ACL,我想我会看看它!
    • 正确,我还没有尝试过你的插件,如果我能让它像你的演示一样工作,我会是 GOLDEN。我已下载并按照说明进行操作。但是,它正在引发错误。我在app_controller.php beforeFilter 中使用了configuration_controller.php 来检查站点是打开还是关闭。我有这样的if($this->Configuration->get_site_status() == 1){ .... 我得到的错误是Undefined property: AclController::$Configuration。我该如何解决这个问题?这样可以吗?
    • 你有一个控制器,它是你的 AppController 的一个属性?这并不完全遵循标准的 Cake 做事方式。如果你需要调用另一个控制器的动作,你应该使用$this->requestAction() 函数。或者,get_site_status() 方法可以放在模型中。无论如何,这里的问题是你如何初始化Configuration属性?,因为在你使用插件的时候似乎没有这样做。
    • 基本上,我创建了配置控制器并使用var $uses = array('Configuration')。但是,我已经完全解决了这些问题,并将创建类似的东西,但作为一个组件。我终于成功地安装了你的插件,它在大多数情况下都运行良好。我在这里和那里遇到了一些问题,但我确信这是因为我的配置错误。我将继续尝试修复它们,如果我不成功,我会回复以寻求帮助。为您提供出色的脚本。非常感谢!这让我头顶上的重量重了很多……
    • 很酷,如果它可以帮助你,谢谢你的祝贺 :-)
    【解决方案2】:

    这是 Cake 的痛点之一,ACL 的复杂性..

    还有其他方法吗?嗯,是。是的,从某种意义上说,您可以编写自己的访问权限管理,并简单地绕过蛋糕的 ACL 实现。例如,您可以有一个基于角色的 ACL,其中角色几乎是一个固定列表。这可以通过多种方式实现,DarkAuth 演示了其中一种方式。

    此外,如果您的应用不适合您,请不要尝试将其放入蛋糕的 ACL 方案中。自己烘焙,cake 为您提供了插入自己的对象以获取 auth/ACL 内容的选项,所以请使用它!

    但请注意,您想要自己创建的任何功能丰富的 ACL 系统最终都可能看起来很像 cake 的 ACL..所以首先确定确切您需要什么,然后寻找一种方法去做吧。

    无论如何,祝你好运!

    【讨论】:

    • 感谢您的建议。我正在努力看看我是否可以解决这个 Auth/Acl Cake 问题,但如果不能,DarkAuth 似乎是一个非常合法的选择。看起来它是使用 CakePHP 1.2 编写的,但我会继续努力...非常感谢
    【解决方案3】:

    我最近刚刚写了一个可能是最简单的 Auth——我称它为“Tiny”: http://www.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/

    应该就是你所需要的。

    它确实需要角色存在于会话身份验证中,但您自己管理用户角色。 因此,如果您想使用多角色身份验证,您可能必须将其添加到您的登录方法中。

    【讨论】:

    • 嘿.. 这看起来不错。但是,我终于在 Alaxos Plugin_Acl 上取得了成功,我坚持使用它来管理我的 ACL。但是,我感谢您制作本教程,并且我相信许多其他 CakePHP 用户也会感激不尽。谢谢,
    • 很高兴来到这里。 alexos 的插件有一个很好的功能,它可以从网站上(动态地)编辑。这种动态方法可能更适合某些项目。所以没有难过的感觉:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多