CakePHP Логин Перенаправление - PullRequest
0 голосов
/ 11 мая 2011

У меня есть следующий код в моем методе входа:

    if(!(empty($this->data)) && $this->Auth->user())
    {

        if($this->referer(array('controller' => 'users', 'action' => 'login')))
        {
            $this->redirect(array('controller' => 'home', 'action' => 'index'));
        }
        else
        {
            $this->redirect($this->Auth->redirect($this->referer()));
        }
    }
}

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

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

Как мне решить эту проблему?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Если я правильно помню (не подтверждено в 1.3), вы можете установить перенаправление по умолчанию на home и проверить, задан ли путь перенаправления компонентом Auth.

Как-то так в вашем действии входа в систему

$auth_redirect = $this->Session->read("Auth.redirect");
if(isset($auth_redirect) && $auth_redirect != "") {
    $this->redirect($auth_redirect);
} else { 
    $this->redirect('/home/index')
}

И что-то подобное в вашем app_controler

$this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
0 голосов
/ 11 мая 2011

Есть два или три варианта, один из которых, на мой взгляд, намного лучше

Вариант 1 - встроить в форму (предпочтительно)

  1. Когда они перенаправляются на страницу входа, вставьте URL предыдущей страницы в URL входа в качестве параметра GET
  2. Возьмите этот параметр get и добавьте его в качестве скрытого входного значения в форму входа
  3. В указанном выше коде входа проверьте наличие этого значения и перенаправьте его, если оно существует.

Вариант 2 - запомнить в сеансе

  1. Прежде чем они будут перенаправлены на страницу входа, сохраните URL предыдущей страницы в сеансе
  2. После входа в систему проверьте наличие значения предыдущей страницы, перенаправьте его, если оно существует, и удалите его из сеанса.

Вариант 3 - отображать страницу входа по URL-адресу вместо перенаправления на страницу входа.

  1. Вместо отображения неавторизованной страницы с перенаправлением или сохраните их по нужному URL, но отобразите форму входа .
  2. Тогда ваш код выше будет работать так, как вам нужно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...