Перенаправление учебника по аутентификации CMS CakePHP 4 для входа в систему не работает (подпапка игнорируется)

Я пытаюсь реализовать аутентификацию в соответствии с официальным руководством по CMS: https://book.cakephp.org/4/en/tutorials-and-examples/cms/authentication.html#adding-login

Но перенаправление реализовано здесь:

public function getAuthenticationService(ServerRequestInterface $request): AuthenticationServiceInterface
{
    $authenticationService = new AuthenticationService([
        'unauthenticatedRedirect' => '/users/login',
        'queryParam' => 'redirect',
    ]); 

не работает должным образом.

Моя установка находится во вложенной папке, такой как example.com/project1/, и правильный полный URL-адрес будет example.com/project1/users/login, но при попытке достичь example.com/project1/ перенаправление указывает на example.com/users/ авторизоваться.

Я также пытался изменить

$authenticationService = new AuthenticationService([
        'unauthenticatedRedirect' => '/users/login',
        'queryParam' => 'redirect',

to

$authenticationService = new AuthenticationService([
        'unauthenticatedRedirect' => [controller => 'users', 'action' => index],
        'queryParam' => 'redirect',

но это приводит к

parse_url() ожидает, что параметр 1 будет строкой, задан массив

ошибка

Как мне установить перенаправление или где я могу изменить «BASEURL» в CakePHP 4?


person mjd    schedule 26.05.2020    source источник
comment
Проверьте stackoverflow.com/a/59089086/1392379.   -  person ndm    schedule 27.05.2020
comment
@ndm спасибо за ссылку, но когда я меняю 'unauthenticatedRedirect' => '/users/login', на 'unauthenticatedRedirect' => \Cake\Routing\Router::url('/users/login'), и оставляю строку с queryParam нетронутой, я получаю сообщение об ошибке перенаправления до многих, пока URI не станет слишком длинным, если я удалю строку, я все еще получаю много перенаправлений ошибка   -  person mjd    schedule 27.05.2020
comment
Похоже, что ваше действие входа в систему не было исключено из проверки подлинности, что привело к циклу перенаправления, отсюда трудно сказать, вам придется выполнить некоторую отладку относительно того, где происходит перенаправление.   -  person ndm    schedule 27.05.2020


Ответы (2)


Я нашел Проблема.

Я изменил код по ссылке @ndm на это:

$authenticationService = new AuthenticationService([
        'unauthenticatedRedirect' => \Cake\Routing\Router::url('/users/login'),
        'queryParam' => 'redirect',

приводящий к бесконечному перенаправлению, потому что я забыл добавить эту функцию в UsersController:

public function beforeFilter(\Cake\Event\EventInterface $event)
{
    parent::beforeFilter($event);
    // Configure the login action to not require authentication, preventing
    // the infinite redirect loop issue
    $this->Authentication->addUnauthenticatedActions(['login']);
}
person mjd    schedule 27.05.2020

У меня такая же проблема. мне тоже пришлось поменять

'loginUrl' => ('/users/login'),

to

'loginUrl' => \Cake\Routing\Router::url('users/login'),

После этого у меня сработало

person Dirk    schedule 27.05.2020