Cake PHP 4 CMS Authentication Tutorial Перенаправление для входа в систему не работает (подпапка игнорируется) - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь реализовать аутентификацию в соответствии с официальным учебником 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/login.

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

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

на

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

, но это привело к

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

ошибка

Как мне установить перенаправление или где я могу изменить "BASEURL" в Торт PHP 4?

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Я обнаружил проблему.

Я изменил код в соответствии со ссылкой @ 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']);
}
0 голосов
/ 27 мая 2020

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

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

на

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

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

...