【发布时间】:2011-06-13 21:03:46
【问题描述】:
我按照 CakePHP Cookbook 的简单 ACL 应用程序教程学习了一段时间,一切都很好。当我创建一个用户时,我的 ARO 也是自动创建的,无需太多努力,我就能够为每个人授予正确操作的权限。
不过,我的应用程序现在变得更加复杂。当我创建一个“Realtor”时,我会在 Realtor 模型的 afterSave 函数中为他们创建一个用户,如下所示:
App::import( 'Component', 'Auth' );
$this->Auth = new AuthComponent();
$this->User->create();
$this->User->set(array(
'username' => $this->data['Realtor']['email'],
'password' => $this->Auth->password($this->data['Realtor']['password']),
'usergroup_id' => 2,
'realtor_num' => $this->id
));
if ($this->User->save()) {
$this->save(array('user_id'=>$this->User->id));
} else {
//error
}
不幸的是,虽然这成功地创建了用户,并且数据似乎都符合我的预期,但我似乎不再获得 ARO。
我的用户组模型包含该行
var $actsAs = array('Acl' => array('type' => 'requester'));
除此之外,我不知道如何说服我的应用程序生成 ARO。
有什么我可以忘记的,可以帮助我让我的 ACL 回到正轨吗?
编辑:
我在 User 模型的 afterSave 中有这个,这似乎造成了各种麻烦:
function afterSave($created) {
if (!$created) {
$parent = $this->parentNode();
$parent = $this->node($parent);
$node = $this->node();
$aro = $node[0];
$aro['Aro']['parent_id'] = $parent[0]['Aro']['id'];
$this->Aro->save($aro);
}
}
(由本文提供:http://mark-story.com/posts/view/auth-and-acl-automatically-updating-user-aros)我不知道这是否会以某种方式破坏我的 ARO 创作……可能会教我在不完全理解它们是什么的情况下添加随机代码 sn-ps至少在做!
【问题讨论】:
标签: mysql cakephp acl authentication