Как говорит Мартин Бин, вы можете использовать ACL.Для сложного сайта это был бы мой выбор.Вам не нужно входить в систему для доступа к публичным страницам.http://multiheadweighers.co.uk - пример сайта, использующего ACL.За общедоступными страницами есть полнофункциональная CMS.
Для простого сайта я бы разрешил, например, доступ к действию просмотра, используя
function beforeFilter() {
parent::beforeFilter;
$this->Auth->allow('view');
}
см. http://book.cakephp.org/view/1257/allow
Это действительно не имеет большого значения - попробуйте, и вы увидите, насколько это просто.
РЕДАКТИРОВАТЬ:
Из книги @ http://book.cakephp.org/view/1550/Setting-up-permissions
Теперь мы хотим убрать ссылки на Auth-> разрешенные действия в ваших контроллерах пользователей и групп.Затем добавьте следующее в ваши контроллеры постов и виджетов:
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allowedActions = array('index', 'view');
}
Это удаляет «выключатели», которые мы ранее установили на контроллерах пользователей и групп, и дает публичный доступ к индексу и представлениюдействия в постах и контроллерах виджетов.В AppController :: beforeFilter () добавьте следующее:
$this->Auth->allowedActions = array('display');
Это делает действие 'display' общедоступным.Это сделает наш PagesController :: display () общедоступным.Это важно, поскольку часто в маршрутизации по умолчанию это действие используется в качестве домашней страницы приложения.
РЕДАКТИРОВАТЬ 2:
$user = ($this->Auth->user())?$this->Auth->user():'Anonymous';
if(!$this->Acl->check($user,"{$url}"))
$this->redirect($this->referer()); // or whatever action you want to take.