我正在使用ACL设置CakePHP应用程序。我使用的是MongoDB而不是MySQL。一切正常,直到我设置ACL表。 ACL数据库已初始化。我想设置一些基本的ACO和ARO但失败了。我只能创建父级设置为root的节点。每次我添加一个父节点时,它会给出错误,并显示以下错误消息。
AclNode::node() - Couldn't find Aro node identified by "Array ( [Aro0.model] => User [Aro0.foreign_key] => 53a8f92db238e52c08d63af1 ) "
这是CakePHP MongoDB数据源的问题吗?
谢谢!
答案 0 :(得分:1)
CakePHP的ACL逻辑建立在the tree behavior上,用于在关系数据库中存储分层数据的行为。 MongoDB是一个无模式数据库,它没有必要使用树行为来存储分层数据的限制;将它们放在一起is a very odd match(引用自己):
如果你想在mongodb中存储树形结构 - MPTT可能是最不适用的模型。
要使用CakePHP与MongoDB的ACL实现,需要确保正确填充ACO和ARO表中的lft
字段。
值得说明并认真考虑不使用DB ACL。
在浩大大多数(尝试过的)使用过程中,根本没有必要考虑这些问题的候选名单:
如果对任何一个问题的回答是"是" - 数据库ACL可能不是最佳解决方案。
考虑使用ini ACL或仅使用特定于控制器的逻辑实现isAuthorized。