CakePHP ACL - не удается получить доступ к контроллеру, хотя я использую $ this-> Auth-> allow ('index', 'view') - PullRequest
0 голосов
/ 16 декабря 2011

All

Здесь я снова с 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 ('*') в 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 переменные ....

Понятия не имею, что происходит ...

1 Ответ

2 голосов
/ 17 декабря 2011

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

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

В 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'
     );

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

...