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?
Как они перенаправляются на страницу входа? Каким бы методом вы это ни делали, вы можете добавить переменную GET в конец URL-адреса страницы входа, а затем ссылаться на эту переменную на странице входа.
Итак, пользователь хочет получить доступ к www.example.com/privatepage
, но вам нужно, чтобы они сначала зашли на www.example.com/login
. Перенаправьте их на www.example.com/login?targetpage=/privatepage
, затем в коде вашей страницы входа вы сможете получить доступ к переменной targetpage
.
на странице входа:
если вы перейдете на 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
}
] Может быть хорошей идеей иметь белый список разрешенных URL-адресов при перенаправлении таким образом, иначе злоумышленник может отправить кому-то ссылку, например, example.com/login?attacker.com/fake_examplecom, и пользователь будет перенаправлен на сайт злоумышленника, думая, что он только что зашел на ваш сайт. Исходный URL-адрес указывал на ваш сайт, поэтому он выглядит заслуживающим доверия. Как вы можете себе представить, с этим можно сделать много неприятных вещей.