в моем приложении, основанном на CakePHP, я использую.
Когда я вхожу с помощью URL / manager / login (соответствует LoginController, префикс Manager), все в порядке.
Когда я выхожу из системы или использую / manager, результат будет следующим:
/manager/login?redirect=%2Fmanager%2Flogin%3Fredirect%3D%252Fmanager%252Flogin%253Fredirect%253D%25252Fmanager%25252Flogin%25253Fredirect%25253D%2525252Fmanager%2525252Flogin%2525253Fredirect%2525253D%252525252Fmanager%252525252Flogin%252525253Fredirect%252525253D%25252525252Fmanager%25252525252Flogin%25252525253Fredirect%25252525253D%2525252525252Fmanager%2525252525252Flogin%2525252525253Fredirect%2525252525253D%252525252525252Fmanager%252525252525252Flogin%252525252525253Fredirect%252525252525253D%25252525252525252Fmanager%25252525252525252Flogin%25252525252525253Fredirect%25252525252525253D%2525252525252525252Fmanager%2525252525252525252Flogin%2525252525252525253Fredirect%2525252525252525253D%252525252525252525252Fmanager%252525252525252525252Flogin%252525252525252525253Fredirect%252525252525252525253D%25252525252525252525252Fmanager%25252525252525252525252Flogin%25252525252525252525253Fredirect%25252525252525252525253D%2525252525252525252525252Fmanager%2525252525252525252525252Flogin%2525252525252525252525253Fredirect%2525252525252525252525253D%252525252525252525252525252Fmanager%252525252525252525252525252Flogin%252525252525252525252525253Fredirect%252525252525252525252525253D%25252525252525252525252525252Fmanager%25252525252525252525252525252Flogin%25252525252525252525252525253Fredirect%25252525252525252525252525253D%2525252525252525252525252525252Fmanager%2525252525252525252525252525252Flogin%2525252525252525252525252525253Fredirect%2525252525252525252525252525253D%252525252525252525252525252525252Fmanager%252525252525252525252525252525252Flogin%252525252525252525252525252525253Fredirect%252525252525252525252525252525253D%25252525252525252525252525252525252Fmanager%25252525252525252525252525252525252Flogin%25252525252525252525252525252525253Fredirect%25252525252525252525252525252525253D%2525252525252525252525252525252525252Fmanager%2525252525252525252525252525252525252Flogin%2525252525252525252525252525252525253Fredirect%2525252525252525252525252525252525253D%252525252525252525252525252525252525252Fmanager%252525252525252525252525252525252525252Fprofile
Бесконечный цикл в строке запроса и сервер возвращают ошибку 404.15.
Та же конфигурация, что и в 3.5
$this->loadComponent('Auth', [
'fields' => [
'username' => 'email',
'password' => 'password'
],
'loginAction' => [
'prefix' => 'manager',
'controller' => 'Login',
'action' => 'index',
'plugin' => false
],
'loginRedirect' => [
'prefix' => 'manager',
'controller' => 'Managers',
'action' => 'index',
'plugin' => false
],
'logoutRedirect' => [
'prefix' => 'manager',
'controller' => 'Login',
'action' => 'index',
'plugin' => false
],
'authenticate' => [
'Form' => [
'passwordHasher' => [
'className' => 'DressFinder'
],
'fields' => [
'username' => 'email',
'password' => 'password'
],
'userModel' => 'Managers'
]
],
'authError' => __('You are not authorized to access that location.'),
'storage' => [
'className' => 'Session',
'key' => 'Auth.Managers'
]
]);
Маршруты не были изменены, и в контроллере без префиксов работают действия входа / выхода.
Спасибо за любую помощь.
Это ошибка, компонент аутентификации сравнивает действие входа в систему с текущим URL-адресом, включая аргумент строки запроса, что приводит к несоответствию, рассматривая пользователя как не прошедшего проверку подлинности, и, таким образом, вызывает перенаправление на действие входа в систему, после чего та же процедура запускается снова.
Это будет исправлено в 3.6.1, если вы не можете ждать, примените патч вручную, пока не станет доступна новая версия.
Увидеть
Это может быть не ответ, у меня недостаточно репутации для добавления комментариев!
Вы можете попробовать добавить эти коды в routes.php
use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
use Cake\Routing\Route\DashedRoute;
Router::defaultRouteClass(DashedRoute::class);
Router::scope('/', function (RouteBuilder $routes) {
Router::prefix('manager', function ($routes){
$routes->connect('/', ['controller'=>'Your_controller', 'action'=>'your_action']);
$routes->connect('/:controller/', [], ['routeClass' => 'Cake\Routing\Route\InflectedRoute']);
$routes->connect('/:controller/:action/*', [], ['routeClass' => 'Cake\Routing\Route\InflectedRoute']);
});
$routes->fallbacks(DashedRoute::class);
});
Plugin::routes();
Похоже, перенаправление не работает по умолчанию.
Добавить / настроить следующие initialize
метод в AppController
должно работать нормально.
$this->loadComponent('RequestHandler', [
'enableBeforeRedirect' => false
]);