Я видел много подобных проблем здесь в 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 должен перенаправлять в случае ошибок разрешения. Кто-нибудь знает, как это сделать?
Извините, ребята, я случайно нашел ответ чуть позже. Поскольку у CakePHP есть несколько очень интуитивно понятных ярлыков, я начал угадывать некоторые возможные варианты для Auth Component, которые могли бы решить мою проблему. И я обнаружил, что unauthorizedRedirect
вариант!
Так что я:
'unauthorizedRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
И теперь он работает нормально. Я просто хотел бы, чтобы документация Кейка охватывала это … Если да, клянусь, я нигде не мог его найти.
Других решений пока нет …