CakePHP – Как разрешить доступ к определенным страницам без проверки подлинности

Я создал приложение CakePHP, где я создал UsersController , который обрабатывает все о пользователях. Когда я пытаюсь просмотреть www.mydomain.com , если я вошел в систему, давайте посмотрим на индекс ( app/View/Pages/home.ctp ). Кроме того, он перенаправляет меня на mydomain.com/users/login и не может войти в систему.

Я попытался посмотреть AppController.php , PagesController.php или app/Config/core.php и app/Config/routes.php , но ничего не нашел. Я также UsersController.php , что мой UsersController.php не несет ответственности за это.

Я не помню, и я не могу найти, как отключить это. Какой файл должен отвечать за это?

EDIT: моя версия CakePHP – 2.3.

Как правило, вы можете публиковать определенные действия с использованием метода allow() метода auth .

Создание публичных страниц может потребовать немного больше работы, если вы захотите сделать только определенные страницы общедоступными, так как PagesController обрабатывает все страницы за одно действие ( display() ). Если это так, то вы можете использовать request->params['pass'][0] который будет содержать имя страницы, проверить это на список разрешенных страниц, а затем разрешить действие display с помощью Auth::allow .

Например, в PagesController :

 public function beforeFilter() { parent::beforeFilter(); $allowedPages = array('home', 'foo', 'bar'); if(isset($this->request->params['pass'][0]) && in_array($this->request->params['pass'][0], $allowedPages)) { $this->Auth->allow('display'); } } 

Это позволит просматривать страницы home , foo и bar , не войдя в систему.

Если бы вы хотели сделать все страницы общедоступными, вы могли бы просто использовать Auth::allow без каких-либо условий, то есть:

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