CakePHP ACL - 虽然我使用$ this-> Auth-> allow('index','view')但无法访问控制器

时间:2011-12-16 04:59:01

标签: cakephp acl

所有

这里我再次使用CakePHP ACL。经过许多头痛之后,我能够Alaxos ACL为我工作。我设置了组权限等,效果很好。但是,我遇到一个对我来说根本没有意义的控制器的问题......

  • 在此控制器articles_controller.php中,beforeFilter()似乎无法生效

app_controller.php我有

function beforeFilter(){
    ...
    $this->Auth->allow('display') //To make sure all my pages are plublic, like about_us
}

在我的所有控制器中,包括articles_controller.php,我有以下代码

...
function beforeFilter(){
    parent::beforeFilter();
    $this->Auth->allow('index','view');
}
....

但是,当我访问此控制器时,索引或视图操作都不起作用。我收到YOU ARE NOT AUTHORIZED TO ACCESS THAT LOCATION错误。控制器工作的唯一时间是我更改了$this->Auth->allow('display') to的{​​{1}}中的app_controller.php('*')。

我不知道该怎么做。不管ACL怎么说,不beforeFilter()使这两个行动公开?我只能在登录时访问它们。其他控制器中的相同操作也可以正常工作。没有别的东西是不寻常的......

我能做什么,或者我应该在哪里看下一步。为什么呢?

=============================================== ============================================

并添加,

我的$this->Auth->allow('index','view')中有以下代码:

articles_controller.php

如果我对所有这些进行评论,AUTH现在可以访问操作/视图,但会显示 $this->set('articles',$articles); $this->set('topfive_articles',$topfive_articles); $this->set('other_articles',$other_articles); $this->set('categories',$categories); 个错误。另外,如果我评论出来,即。 3的4,没有任何反应。如果我注释掉所有4个变量,我只能通过....

我不知道发生了什么......

1 个答案:

答案 0 :(得分:2)

=============================================== =================================

经过数小时的研究和尝试后,我得出了一个简单的结论,很明显,我不知道为什么我错过了它。

articles_controller.php我除了index, view, edit, delete, admin_xxx之外还有其他行动。我有其他getArticleComments, mostViewedArticle

我不确定它是否是正确的方式,很可能不是,但是我使用requestAction来处理这些操作,并且大多数都是在视图中显示的ELEMENT中。

我基本上必须告诉Auth允许这些操作以及索引和视图公开。

$this->Auth->allow(
            'index',
            'view',
            'getTotalComments',
            'mostComments',
            'childrenComments',
            'getRelated',
            'getArticleComments',
            'mostViewed'
     );

瞧!一旦我这样做,问题就解决了......哇!