Я видел много подобных проблем здесь, в SO, но никто не помог мне решить мою проблему.
Я не думаю, что CakePHP AuthComponent ведет себя правильно, когда дело доходит до ошибок разрешений.
Приложение CakePHP находится в субдомене моего веб-сайта (например, http://www.example.com/myapp). Каждый раз, когда возникает ошибка разрешения (пользователю не разрешено видеть эту страницу), Cake добавляет еще один URL-адрес/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')
)
)
)
);
И в routes.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 должен быть перенаправлен в случае ошибок разрешения. Кто-нибудь знает, как это сделать?
Мне жаль, ребята, я случайно нашел ответ чуть позже. Поскольку у CakePHP есть некоторые очень интуитивные ярлыки, я начал угадывать некоторые возможные варианты для компонента Auth, который бы разрешил мою проблему. И я закончил поиск опции unauthorizedRedirect
!
Так что я:
'unauthorizedRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
И теперь он работает отлично. Я просто хочу, чтобы документация на торт охватывала это... Если это так, я клянусь, что не могу найти его нигде.