【发布时间】:2012-03-20 12:15:33
【问题描述】:
我正在使用 cakePHP 的 isAuthorized() 函数来检查用户是否被授权执行控制器操作,但我遇到的奇怪问题是我的其他控制器操作的权限也被用户屏蔽了。我只是这样做:
function isAuthorized()
{
$user_id_logged_in = $this->Auth->user('id');
switch($this->action)
{
case: 'my_action':
if($user_id_logged_in)
{
// check if user has access to execute controller action
return $this->Acl->check(array(
'model' => 'MyModel', 'foreign_key' => $my_foreign_key),
'controllers/MyController/'.$this->action);
}
else
{
return false;
}
break;
}
}
我想检查登录的用户是否有权执行操作my_action。但是当我这样做时,用户也会失去对我控制器中其他操作的权限。知道这有什么问题吗?
谢谢
【问题讨论】:
-
你在哪里设置
$user_id_logged_in? -
$user_id_logged_in 正好等于
$this->Auth->user('id'); -
从文档中我可以看出,
check()方法采用 3 个字符串参数。check($aro, $aco, $action = "*")。可以看到here。 -
我可以在书中看到你的版本。
-
你搞定了吗?我还认为
MyModel应该是您的用户模型的名称(User可能),$my_foreign_key应该是$user_id_logged_in
标签: php cakephp permissions cakephp-1.3 acl