【问题标题】:CakePHP - Check ACL Always Returning FalseCakePHP - 检查 ACL 总是返回 False
【发布时间】:2014-08-25 19:47:36
【问题描述】:

我正在尝试创建一个视图,允许用户为 CakePHP 应用程序中的每个组设置 ACL 权限。但是,当尝试在视图中执行我的 ACL 检查时,ACL 检查每次都返回 false。

在我的控制器中,我有以下代码:

$this->set('acl', $this->Acl);

视图然后用户是这样的:

<input type="checkbox" <?php echo ($acl->check('Group::'.$group['Group']['id'], 'Accommodations', 'index') ? $checked : $notChecked); ?> name="<?php echo $group['Group']['name']; ?>_accommodations_index" value="1">List<br />

变量 $checked 和 $notChecked 设置如下:

$checked = " checked='checked' ";
$notChecked = "";            

这样做的目的本质上是创建一个复选框网格,它们最初所在的位置(检查组是否有权访问它,如果组没有,则取消选中。

复选框打印在通过迭代每个存在的组生成的表中。

有什么建议吗?

【问题讨论】:

  • 使用*,而不是用户(使用类似这样的东西:)
  • 检查控制器中的所有权限并将结果数组传递给视图。你不应该在视图中有任何逻辑。
  • 对于更正,请编辑问题,如果您将其添加为评论,有人可能会错过它(而且,这就是我们提供编辑功能的原因)

标签: php cakephp acl


【解决方案1】:

请检查此url。可能是你错过了一些东西。如下所示:

$acl->check(
    array(
       'Group' => array('id' => $group['Group']['id'])
    ), 
    'Accommodations', 
    'index'
);

【讨论】:

    【解决方案2】:

    找到问题了。

    ($acl->check(array('model' => 'Group', 'foreign_key' => $group['Group']['id']), 'Accommodations/index') ? $checked : $notChecked); ?>
    

    我必须指定 array('model' => 'Group', 'foreign_key' => $group['Group']['id']) 才能工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-31
      • 2013-12-26
      • 1970-01-01
      • 2018-08-05
      • 2013-08-13
      • 2017-08-02
      • 2021-06-24
      • 2011-05-07
      相关资源
      最近更新 更多