Наличие действий / страниц без входа в систему - PullRequest
1 голос
/ 29 октября 2010

Я создаю приложение, используя cakePHP.Есть ли у нас метод, с помощью которого мы можем разрешить публичным пользователям доступ к определенным страницам без входа в систему. Было бы несколько страниц, например, о нас, касающихся всей организации или страницы контактов.Есть ли способ избежать входа в систему, что-то похожее на то, как у нас есть способы добавлять компоненты или устанавливать макеты.

Ответы [ 2 ]

1 голос
/ 29 октября 2010

Как говорит Мартин Бин, вы можете использовать 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.
1 голос
/ 29 октября 2010

Решением было бы использование метода allow в компоненте Auth, чтобы позволить пользователю посещать эти страницы.

Спасибо!

...