我有一个带有 Auth 和 ACL 的 CakePHP 应用程序设置。
我还在这个应用程序中制作了一个插件,其中包括一个单独的登录到远离应用程序的网站的另一部分。这使用 Auth 在不同的表上登录,并且不需要 ACL,因为用户将能够访问该站点的这一小部分的所有区域。
我设法使用以下方法将两个身份验证分开:
AuthComponent::$sessionKey= 'Auth.Recipient';
在插件的 AppController 和
AuthComponent::$sessionKey= 'Auth.User';
在 App 的 AppController 中
这似乎运作良好,让我可以分别登录网站的两个区域。
接下来,当我尝试在我的插件中添加更多方法时,我收到了错误:
AclNode::node() - Couldn't find Aro node identified by "Array ( [Aro0.model] => Group [Aro0.foreign_key] => ) "
我绝望地尝试运行 AclExtras.AclExtras aco_sync ,但这并不奇怪。
我试图通过添加另一个名为“客户”的组(我正在使用组 ACL)来解决这个问题,然后为我的插件表中创建的所有用户分配客户组 ID。
这停止了错误,接下来我尝试为这些用户的 users/initdb 方法添加一个新行,以便他们只能访问客户控制器。但是,如果他们尝试访问它,他们将被踢出登录页面,就好像他们无权访问此控制器一样。
将方法名称添加到:
$this->Auth->allow('');
有效,但显然不是一个解决方案,尽管它为我指明了与许可相关的方向。
对我来说,理想的解决方案是我可以简单地停止插件从应用程序继承任何 ACL。