我有一个应用程序,所有用户都必须登录。我正在使用该Auth
组件进行身份验证和ACL
授权。
我基本上在管理控制器的 `beforeFilter() 中做这样的事情:
if(!$this->Acl->check(array('model' => 'User', 'foreign_key' => $this->Auth->user()['id']), 'Admin', 'read'))
{
pr('You are NOT allowed to be here!');
}
这适用于任何登录用户,有些用户可以看到管理页面,有些则不能。
但是,当我在未登录时转到/admin时,我得到:
AclNode::node() - 找不到由“Array ([Aro0.model] => model [Aro0.foreign_key] => U)”标识的 Aro 节点
(我不知道为什么它会打印“U”)。就像它正在尝试进行查找一样,但是由于用户信息不存在,因此它崩溃了。我确定我在这里遗漏了一些东西。我可以通过检查用户是否登录来避免这个问题:
if($this->Auth->user()) //do the ACL check
但我不喜欢这种方法,我想这是错误的。
我需要某种默认设置吗?