Перенаправить URL-адрес ссылки (ссылки)

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

Но проблема, с которой я столкнулась, – это система, всегда перенаправляемая к местоположению по умолчанию, которое является http://test.url.com/dashboard .

Чтобы реализовать это, я использовал http://symfony.com/doc/current/reference/configuration/security.html#redirecting-after-login use_referer: true в security.yml и для его проверки. Я использовал print_r($request->headers->get('referer')); на странице входа.

Но это всегда возвращает null когда я нажимаю ссылку из письма, но возвращает правильный URL-адрес реферера, когда я выхожу из системы и приземляется на странице входа.

EDIT – security.yml

 security: providers: in_memory: memory: ~ webservice: id: user_provider encoders: Project\Bundle\LoginBundle\Security\User\User: plaintext access_control: - { path: ^/signin, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: "^/(signup|forgotpassword|resetpassword/[0-9a-z]+)?$", roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/, roles: IS_AUTHENTICATED_FULLY } firewalls: secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /signin check_path: _security_check access_denied_url: forgotpassword dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false default: anonymous: true 

Итак, у вас есть 2 варианта:

Вы можете либо заполнить референт вручную, либо его можно заполнить в своем контроллере, вызвав переадресацию имени, указав его в security.yml. Я рекомендую метод security.yml, так как я на самом деле не пробовал ручную совокупность, потому что я не доверяю себе или кому-либо еще, чтобы всегда помнить, чтобы заполнить ссылку в этих ситуациях. security.yml также имеет преимущество не иметь код перенаправления по всему месту.

 $request->getSession()->set('referer', $request->attributes->all()); 

или

 access_control: - { path: ^/product/.*, roles: IS_AUTHENTICATED_REMEMBERED }