Как я могу получить loginRedirect из нескольких мест входа в CakePHP?

StackOverflow https://stackoverflow.com/questions/238358

  •  04-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь заставить аутентификацию работать по своему вкусу в приложении CakePHP и столкнуться с проблемой.

Я хочу разрешить пользователю входить в систему либо с домашней страницы, либо со специальной страницы входа. Я использую компонент Auth для управления входом в систему, и сейчас сам вход в систему работает. Я отправляю форму на главной странице в / Users / Login, и она регистрирует их и создает сеанс. Проблема в том, что он перенаправляет пользователя обратно на домашнюю страницу. Я бы предпочел, чтобы они перенаправляли в местоположение, указанное в loginRedirect.

Если я захожу из / users / login напрямую, он переходит к loginRedirect. Я думаю, что проблема связана с отправкой формы с одной страницы на другую, а не на саму себя, auth автоматически считает, что вы хотите вернуться на предыдущую страницу.

Есть мысли?

Это было полезно?

Решение

в контроллере приложений

public function beforeFilter( )
{
    $this->Auth->autoRedirect   =   false;
}

в UsersController

public function login( )
{
    if( $this->Auth->user( ) )
    {
        $this->redirect( array(
            'controller'    =>  'users' ,
            'action'    =>  'index' ,
        ));
    }
}

Кроме того, если вы этого еще не сделали, вам следует переместить форму в элемент, чтобы вы могли быть абсолютно уверены, что форма входа в систему идентична между двумя представлениями входа в систему.

Другие советы

Да, у auth есть функция, с помощью которой вы будете перенаправлять вас на страницу, к которой вы пытались получить доступ перед входом в систему. Если настройка перенаправления журнала не сработала, вы можете попытаться установить для loginRedirect значение false и выполнить руководство ($ this- > перенаправление ([..]) в действии UsersController :: login.

вы можете либо отключить $ autoRedirect, установив его в false и обработав перенаправление самостоятельно. Проблема с AuthComponent заключается в том, что существует слишком много автоматики, которые вы не можете контролировать, или только с помощью хаков.

Одним из решений вашей проблемы является удаление ключа Session.Auth.redirect, поэтому AuthComponent всегда будет использовать URL-адрес $ loginRedirect:

$this->Session->del('Auth.redirect');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top