Как я могу получить loginRedirect из нескольких мест входа в CakePHP? - PullRequest
5 голосов
/ 26 октября 2008

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

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

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

Есть мысли?

Ответы [ 3 ]

8 голосов
/ 23 января 2009

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

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

в UsersController

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

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

0 голосов
/ 17 декабря 2008

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

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

$this->Session->del('Auth.redirect');
0 голосов
/ 27 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...