Предполагаемое перенаправление URL + перенаправление по умолчанию после входа в систему? - PullRequest
6 голосов
/ 25 августа 2010

Когда пользователь пытается получить доступ к нашему веб-сайту по ссылке (например, перейдя на сайт www.website.com/privatepage), он перенаправляется на страницу входа. Как только они войдут в систему, мы хотим перенаправить их на этот целевой URL - как вы это сделаете?

Также у нас есть вариант использования, когда пользователь входит в систему с домашней страницы или переходит непосредственно на страницу входа без намеченного URL-адреса - в этом случае мы хотели бы перенаправить их на страницу по умолчанию.

Может кто-нибудь помочь мне разобраться?

Ответы [ 4 ]

6 голосов
/ 26 августа 2010

на вашей странице входа в систему:

если вы зайдете на www.example.com / private_page

с использованием CodeIgniter (на личной странице)

// if user is not logged in...
$_SESSION['redirect'] = $this->uri->segment(1);
redirect('login');

на странице входа

// successfully logged in..
if (isset($_SESSION['redirect'])) {
    redirect($_SESSION['redirect']);
} else {
    // redirect to default page
}
5 голосов
/ 25 августа 2010

При перенаправлении может быть хорошей идеей иметь белый список принятых URL-адресов - в противном случае злоумышленник может отправить кому-то ссылку, например example.com/login?attacker.com/fake_examplecom, и пользователь будет перенаправлен сайт злоумышленника, думая, что они только что вошли на ваш сайт. Исходный URL указывал на ваш сайт, поэтому он выглядит заслуживающим доверия. Как вы можете себе представить, с этим можно сделать много неприятных вещей.

4 голосов
/ 25 августа 2010

Как они перенаправляются на страницу входа?Какой бы метод вы ни использовали, вы можете добавить переменную GET в конец URL-адреса страницы входа в систему, а затем ссылаться на эту переменную на странице входа в систему.

Итак, пользователь хочет получить доступ к www.example.com/privatepage, ноони нужны вам для входа на www.example.com/login.Перенаправьте их на www.example.com/login?targetpage=/privatepage, затем в коде вашей страницы входа вы можете получить доступ к переменной targetpage.

3 голосов
/ 25 августа 2010

Я обычно сохраняю страницу в сеансе PHP перед тем, как перенаправить на страницу входа.После входа в систему проверьте, установлено ли значение сеанса, а затем перенаправьте его обратно на эту страницу.

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