所有
这里我再次使用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个变量,我只能通过....
我不知道发生了什么......
答案 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'
);
瞧!一旦我这样做,问题就解决了......哇!