Плагин CakePHP Spark Plug auth, вызывающий петли перенаправления - PullRequest
0 голосов
/ 28 августа 2011

Я пытаюсь использовать подключаемый модуль Auth Spark Plug для нового приложения CakePHP 1.3 на http://sandbox.andrewcroce.com. Это достаточно просто настроить, но по какой-то причине я получаю ошибки цикла перенаправления при попытке получить доступ к чему-либо другомучем контроллер пользователя.

Плагин успешно позволяет вам зарегистрироваться и войти в систему, база данных, кажется, написана правильно.Письма с подтверждением отправляются, и ссылка для подтверждения активирует нового пользователя.Однако я не могу получить доступ ни к какой странице или контроллеру, кроме контроллера пользователей.В результате получается цикл перенаправления, в котором неоднократно запрашивается http://sandbox.andrewcroce.com/errors/unauthorized.

Для меня это вызывает 2 вопроса: если я успешно вошел в систему, почему он пытается перенаправить меня на неавторизованную страницу?и почему, черт возьми, он продолжает перенаправлять на iself?

Интересно, если это настройка конфигурации, которую я не понимаю в конфигурации свечи зажигания, но в комментариях нет большого объяснения относительно того, что делают эти настройки.

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

В spark_plug есть таблица с именем «user_group_permissions», например, если вы хотите получить доступ к контроллеру с именем «posts» и к действию «sortBy» (http://localhost/posts/sortby/), то вам нужно добавить это разрешение в таблицу следующим образом:

INSERT INTO `user_group_permissions` ( `user_group_id`, `plugin`, `controller`, `action`, `allowed`) VALUES
( 3, '', 'posts', 'sortBy', 1)

Для этого конкретного случая user_group_id номер 3 - "Гость", другими словами, каждый сможет получить доступ к этому действию в контроллере

0 голосов
/ 05 ноября 2011

Я не уверен насчет специфики Spark Plug, но всякий раз, когда вы активируете компонент Auth, вам нужно обязательно указать, какие действия разрешены для неаутентифицированных пользователей, иначе любые запросы на действие будут перенаправлены на что угодноваша ошибка действияИ затем, если действие по ошибке не разрешено, оно выдаст ошибку, отправив вас ... вы догадались, ваше действие по ошибке, снова и снова.

Внутри каждого контроллера вам нужно что-то внутриваш метод beforeFilter (), подобный следующему:

function beforeFilter() {
    parent::beforeFilter();
    // Allow all actions
    $this->allow(*);
    // Only allow view and index
    $this->allow('view', 'index');
}

Если вы не запускаете метод allow(), вы говорите, что ни одно из действий не должно быть доступно неаутентифицированным пользователям.В частности, если вы поместите allow('unauthorized') в свой класс ErrorsController, действие unauthorized не будет перенаправлено в цикле.

...