Я создаю приложение с использованием cakePHP. Есть ли у нас метод, позволяющий публичным пользователям доступ к определенным страницам без входа в систему. Было бы несколько страниц, например, о нас в отношении всей организации или страницы контактов. Есть ли способ избежать доступа к логину, что-то похожее на то, как мы можем добавлять компоненты или устанавливать макеты.Имея действия/страницы без необходимости входа в систему
ответ
Как говорит Мартин Бин, вы можете использовать ACL. Для сложного сайта это было бы моим выбором. Вы не должны войти в систему, чтобы получить доступ к общедоступным страницам. http://multiheadweighers.co.uk - пример сайта, использующего ACL. За общедоступными страницами есть полнофункциональная CMS.
Для простого сайта я позволил бы доступ к, например, вид действия с использованием
function beforeFilter() {
parent::beforeFilter;
$this->Auth->allow('view');
}
см: http://book.cakephp.org/view/1257/allow
Это действительно не имеет большого значения - попробуйте и вы будете Посмотрите, насколько это просто.
EDIT:
Из книги @http://book.cakephp.org/view/1550/Setting-up-permissions
Теперь мы хотим взять из ссылки в auth-> allowedActions в ваших пользователей и группы контроллеров. Затем добавьте следуя на ваши посты и виджеты контроллеров:
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allowedActions = array('index', 'view');
}
Это снимает «выключатели» мы помещаем в ранее на контроллерах пользователей и групп, а также дает доступ общественности по индексу и просматривать действия в контроллерах сообщений и виджетов. В AppController :: beforeFilter() добавьте следующее:
$this->Auth->allowedActions = array('display');
Это делает общедоступным действие 'display'. Это сохранит нашу страницу PagesController :: display(). Это важно, так как часто по умолчанию маршрутизация имеет это действие в качестве домашней страницы для вашего приложения.
EDIT 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.
не ACL используется для управления правами доступа для зарегистрированных пользователей ?? Как ACL будет участвовать в предоставлении незарегистрированным пользователям доступа к общедоступным страницам? Это должно быть сделано компонентом Auth, не так ли? Не могли бы вы объяснить, как ACL можно использовать для этого? – macha
Да, но это не означает, что ВСЕ должно контролироваться ACL - могут быть исключения. См. Мое редактирование выше. Я столкнулся с некоторыми липкими ситуациями, когда мне приходилось делать что-то вроде моего второго редактирования. – Leo
ACL и Auth работают вместе. – Leo
Решение должно заключаться в использовании метода allow в компоненте Auth, чтобы пользователь мог посещать эти страницы.
Спасибо!
вы можете использовать ACT + AUTH –