CakePHP ACL - Нет доступа к контроллеру, хотя я использую $ this- ›Auth-› allow ('index', 'view')

Все,

Здесь я снова с 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 ошибку. Единственный раз, когда контроллер работает, это если я изменю _8 _ ('*') в app_controller.php beforeFilter().

Я не уверен что делать. Разве $this->Auth->allow('index','view') не делает эти 2 действия общедоступными независимо от ACL? Я могу получить к ним доступ только после входа в систему. Те же действия в других контроллерах работают нормально. В остальном нет ничего необычного ...

Что мне делать, или где мне искать дальше. Почему?

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

И чтобы добавить,

В моем articles_controller.php есть следующий код:

 $this->set('articles',$articles);
 $this->set('topfive_articles',$topfive_articles);
 $this->set('other_articles',$other_articles);
 $this->set('categories',$categories);

Если я закомментирую все это, AUTH теперь дает мне доступ к действию / представлению, но отображает undefined variable ошибок. Также, если я закомментирую, т.е. 3 из 4, ничего не происходит. Я пойму, только если закомментирую все 4 переменные ....

Я не понимаю, что происходит ...


person AKKAweb    schedule 16.12.2011    source источник


Ответы (1)


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

После многих часов исследований и попыток я пришел к простому выводу, который был настолько очевиден, что я не уверен, почему я его пропустил.

В articles_controller.php у меня есть другие действия, кроме index, view, edit, delete, admin_xxx. У меня среди прочего getArticleComments, mostViewedArticle

Я не уверен, что это правильный способ, скорее всего, это не так, но я использую requestAction для обработки этих действий и большей части в ЭЛЕМЕНТ, который отображается в представлении.

Мне в основном пришлось сказать Auth, чтобы эти действия были общедоступными, а также индекс и просмотр.

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

Вуаля! Как только я это сделал, проблема решилась ... ВАУ!

person AKKAweb    schedule 16.12.2011