Redirecione para o URL do link clicado (referido)

Eu tenho um cenário onde o usuário recebe um email do sistema com um link específico que requer login. diga, por exemplo, o link é http://test.url.com/product/2 . Quando clicar neste link redireciona o usuário para a página de login e deve redirect para o URL recebido após o login de sucesso.

Mas o problema que estou tendo é que o sistema redireciona sempre para a localização padrão que é http://test.url.com/dashboard .

Para implementar isso usei http://symfony.com/doc/current/reference/configuration/security.html#redirecting-after-login use_referer: true em security.yml e para testá-lo usei print_r($request->headers->get('referer')); na página de login.

Mas isso sempre retorna null quando eu clico no link do e-mail, mas retorna o URL apropriado do referente quando eu sair do sistema e aterrar na página de login.

EDITAR – 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 

Então você tem duas opções:

Você pode preencher o referente manualmente ou pode preenchê-lo no seu controlador, causando um redirecionamento de login, especificando-o no seu security.yml. Eu recomendo a maneira de segurança, porque eu realmente não tentei a população manual porque não confio em mim mesmo ou em qualquer outra pessoa para sempre lembrar de preencher as referências nessas situações. security.yml também tem o benefício de não ter o código de redirecionamento por todo o lado.

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

ou

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