CakePHP Auth $this-›Auth-›allow('display')

У меня проблема с отображением статических страниц пользователям, не прошедшим проверку подлинности в моем приложении.

Я использую торт 2.1, и мой AppController.php выглядит так:

App::uses('Controller','Controller');

class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'users', 'action' => 'login')
        )
    );

    public function beforeFilter() {
        $this->Auth->allow('display');
    }
}

Пожалуйста помогите. Спасибо!


person mirko.cek    schedule 19.09.2012    source источник


Ответы (3)


Вы близки, но действие display не является частью действия AppController. Он принадлежит PagesControllerвместо.

Попробуйте добавить эту логику в PagesController, расположенный под app/Controllers/PagesController.php. Это должно делать свое дело.

person Oldskool    schedule 19.09.2012

Вам нужно сделать это в PagesController

public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('display');
}

По крайней мере, это сработало для меня. Надеюсь, это поможет кому-то еще.

person aurelioth    schedule 04.04.2015

Appcontroller.php

class AppController extends Controller {

...
  public function beforeFilter() {
    $this->Auth->allow('index', 'view');
    $this->set('loggedUser', $this->Auth->user());

    $this->loadModel('Evento');
    $this->set('eventos', $this->Evento->find('all'));
  }

}

PagesController.php

class PagesController extends AppController {

public function beforeFilter() {
    parent::beforeFilter();
    // Allow users to register and logout.
    $this->Auth->allow('display');
}
 ...
person Victor Augusto    schedule 06.05.2014