2013-04-29 139 views
1

我已覆盖AuthenticationSuccessHandler但我想保持referer重定向行为的成功。Symfony2 - AuthenticationSuccessHandler重定向到原始请求

我看到默认处理uses $request->headers->get('Referer'),我试图做同样的对我的自定义处理程序:

if (($targetUrl = $request->headers->get('Referer')) 
     && $targetUrl !== $this->options['login_path']) { 
    die($targetUrl); 

返回我的登录路径:

http://my_host/login

代替的原始请求。我认为这是因为防火墙先前已将用户重定向到登录页面。

默认处理程序重定向我很好,所以我想知道为什么我没有。

我怎样才能从我的自定义AuthenticationSuccessHandler

回答

1

原始请求你应该看看heredetermineTargetUrl是你要求的。

增加:它保存会话中的返回路径,然后恢复它(第98行)。如果用户会话中没有返回路径,则处理程序将采用Referer。

+0

这是我在问题中放了两次的链接,但问题是'$ request-> headers-> get('Referer')'总是返回'/ login' – 2013-04-29 12:42:42

+0

,因为您也注意到了'因为防火墙先前已将用户重定向到登录页面所以请求是从/ login页面完成的,因此在您的处理程序中用作Referer – Ziumin 2013-04-29 12:47:33

+0

因此,第一个问题是:默认处理程序如何管理它? – 2013-04-29 13:48:01