Zfc-rbac перенаправить на реферер после входа в систему

Есть ли способ для меня перенаправить на URL-адрес ссылки после входа в систему?

У меня есть это в моей конфигурации:

'redirect_strategy' => [
'redirect_when_connected'        => false,
'redirect_to_route_connected'    => 'home',
'redirect_to_route_disconnected' => 'login',
'append_previous_uri'            => true,
'previous_uri_query_key'         => 'redirectTo'
],

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

Я пытался использовать $_SERVER['HTTP_REFERER'] в действии входа в систему, но я выполняю это действие, чтобы загрузить страницу, а затем, когда они публикуют свои учетные данные, он регистрирует их. Делая это таким образом, сервер теперь думает, что реферер является страницей входа, и просто возвращает вас туда.

Вероятно, есть простое решение, и я просто не вижу его в настоящее время.

****************** Джерри-Rig ******************

Так что это то, что я использовал в настоящее время. Я не собираюсь ставить это в качестве ответа, так как я хотел бы лучшего решения. Если у меня будет время вернуться и исправить это, я опубликую свое решение. Но сейчас вот что я использую.

if (null === $this->params()->fromQuery('redirect') && $this->shouldAddRedirect($request->isPost()) &&  !$request->isPost()) {
return $this->redirect()->toUrl('sign-up?redirect=' . $_SERVER['HTTP_REFERER']);
}

Функция, которую я вызываю shouldAddRedirect выглядит так

private $no_redirect = array(
'/login',
'/sign-up'
);

protected function shouldAddRedirect($isPost) {
if (isset($_SERVER['HTTP_REFERER'])){
$referer_url = parse_url($_SERVER['HTTP_REFERER']);
if (isset($referer_url['query']) && count($referer_url['query'])) {
return false;
}
if (isset($referer_url['path']) && in_array($referer_url['path'], $this->no_redirect)) {
return false;
}
} else if ($isPost) {
return false;
}

return true;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]