Передать параметры при перенаправлении

У меня есть сценарий, в котором пользователь щелкает ссылку, полученную в электронном письме, для которого требуется вход. Если ссылка http://test.url.com/product/2, пользователь должен войти в систему, а страница должна перенаправить на тот же путь после аутентификации.

Я попытался решить эту проблему с помощью print_r($request->headers->get('referer'));, который разместил вопрос здесь: Перенаправить на URL ссылки, на которую нажали (перешли) . который не увенчался успехом, поскольку он вернул ноль.

Моя следующая цель — передать параметры на страницу входа в зависимости от URL-адреса.

например: если пользователь нажимает http://test.url.com/product/2, URL-адрес входа будет выглядеть как http://test.url.com/signin/product/2 или http://test.url.com/signing?=pruduct?2 или что-то в этом роде, где система перенаправит пользователя на нужную страницу.

Любой документ/пример передачи параметров с уровня конфигурации приветствуется, так как я очень новичок в этой области. Спасибо :)


person Hasitha Shan    schedule 12.01.2015    source источник
comment
Сохраните URL-адрес в файле cookie и после аутентификации перенаправьте его   -  person Cristian Bujoreanu    schedule 12.01.2015
comment
@CristianBujoreanu большое спасибо за ответ. Я попробую это :), но это лучший способ сделать это? Я прошу просто уточнить, так как я новичок в этой области   -  person Hasitha Shan    schedule 12.01.2015
comment
Если в вашем процессе аутентификации больше шагов, вы больше не можете использовать $request-›headers-›get('referer'), поэтому решение с использованием файлов cookie было бы очень хорошим, почему бы и нет (не забудьте удалить URL-адрес из файла cookie).   -  person Cristian Bujoreanu    schedule 12.01.2015
comment
@CristianBujoreanu спасибо за эту информацию :) я попробую и дам вам знать (y)   -  person Hasitha Shan    schedule 12.01.2015
comment
@CristianBujoreanu Привет .. я все время искал, как сохранить текущий URL-адрес в качестве готовки в файле security.yml .. если вы знаете, как это сделать, не могли бы вы привести пример того, как получить текущий URL-адрес и сохранить его в файле security.yml? спасибо :)   -  person Hasitha Shan    schedule 12.01.2015


Ответы (2)


Я бы предложил указать URL-адрес перенаправления в качестве строки запроса в URL-адресе входа, например

http://test.url.com/signin/?redirect=http://test.url.com/product/2

После успешного входа в систему все, что вам нужно сделать, это

$url=$_GET['redirect'];
header("location:".$url);
person BiJ    schedule 12.01.2015
comment
Большое спасибо :) плохо проверю этот пост назад - person Hasitha Shan; 12.01.2015
comment
Привет, этот метод отличный. только одно, как я могу получить доступ к текущему URL-адресу страницы, чтобы я мог прикрепить его к login_path: http://test.url.com/signin/?redirect= в security.yml? спасибо.. я пытался искать, но в итоге с пустыми руками - person Hasitha Shan; 12.01.2015

Вам это помогает?

public function productAction($id, Request $request){
    $url = $this->container->get("router")->generate("product_route", array("id" => $id));

    /** @var $session Session */
    $session = $request->getSession();
    $session->set("redirect_url", $url);
}         

public function signinAction(Request $request){
    // do your stuff

    /** @var $session Session */
    $session = $request->getSession();
    if ($session->has("redirect_url")){
        return new RedirectResponse($session->get("redirect_url");
    }
}   
person Cristian Bujoreanu    schedule 12.01.2015
comment
Привет, поскольку происходит перенаправление, приложение никогда не достигает контроллера. поэтому я должен получить текущую информацию об URL-адресе в файле security.yml или других подходящих файлах yml :), если это возможно. - person Hasitha Shan; 13.01.2015