2013-04-29 53 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