Intended URL redirect + default redirect after login?

When a user tries to access our website via a link (for instance going to www.website.com/privatepage) they are redirected to a login page. Once they login, we want to redirect them to that intended URL - how do you do this?

Also we have a use case where a user logs in from the homepage, or goes directly to the login page with no intended URL - in this case we'd like to redirect them to a default page.

Can anyone help me figure this out?

6
задан Patrick D'Souza 18 May 2013 в 06:38
поделиться

3 ответа

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

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

4
ответ дан 8 December 2019 в 12:57
поделиться

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

если вы перейдете на 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
}
]
6
ответ дан 8 December 2019 в 12:57
поделиться

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

5
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: