Ошибка перенаправления разрешения в AuthComponent CakePHP

Я видел много подобных проблем здесь в SO, но ни одна не помогла мне решить мою проблему.

Я не думаю, что AuthComponent CakePHP ведет себя правильно, когда дело доходит до ошибок разрешения.

Мое приложение CakePHP находится в поддомене моего веб-сайта (например, http://www.example.com/myapp). Каждый раз, когда возникает ошибка разрешения (пользователю не разрешено видеть эту страницу), Cake добавляет еще один «/ myapp» в URL (так он становится http://www.example.com/myapp/myapp) и, естественно, выдает ошибку, которая говорит о том, что контроллер «myapp» не существует.

В моем сценарии вид входа в систему связан с корнем сайта. Итак, у меня есть в моем AppController:

public $components = array(
'Session',
'Auth' => array(
'loginAction' => array(
'controller' => 'users',
'action' => 'login'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'authorize' => 'Controller',
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
)
)
);

И в маршрутах .php:

Router::connect('/', array('controller' => 'users', 'action' => 'login'));
Router::connect('/users', array('controller' => 'users', 'action' => 'login'));

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

Все, что я хочу, — это возможность вручную настроить, какой URL Cake должен перенаправлять в случае ошибок разрешения. Кто-нибудь знает, как это сделать?

0

Решение

Извините, ребята, я случайно нашел ответ чуть позже. Поскольку у CakePHP есть несколько очень интуитивно понятных ярлыков, я начал угадывать некоторые возможные варианты для Auth Component, которые могли бы решить мою проблему. И я обнаружил, что unauthorizedRedirect вариант!

Так что я:

'unauthorizedRedirect' => array(
'controller' => 'users',
'action' => 'login'
),

И теперь он работает нормально. Я просто хотел бы, чтобы документация Кейка охватывала это … Если да, клянусь, я нигде не мог его найти.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]