Бесконечный цикл входа в систему после обновления CakePHP 3.6

в моем приложении, основанном на 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'
]
]);

Маршруты не были изменены, и в контроллере без префиксов работают действия входа / выхода.

Спасибо за любую помощь.

1

Решение

Это ошибка, компонент аутентификации сравнивает действие входа в систему с текущим URL-адресом, включая аргумент строки запроса, что приводит к несоответствию, рассматривая пользователя как не прошедшего проверку подлинности, и, таким образом, вызывает перенаправление на действие входа в систему, после чего та же процедура запускается снова.

Это будет исправлено в 3.6.1, если вы не можете ждать, примените патч вручную, пока не станет доступна новая версия.

Увидеть

2

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

Это может быть не ответ, у меня недостаточно репутации для добавления комментариев!
Вы можете попробовать добавить эти коды в 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();
0

Похоже, перенаправление не работает по умолчанию.
Добавить / настроить следующие initialize метод в AppController должно работать нормально.

$this->loadComponent('RequestHandler', [
'enableBeforeRedirect' => false
]);

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