2011-12-02 71 views
4

我有一個symfony2應用程序,使用配置了FOSUserBundle的單個防火牆來處理後端用戶持久性。這是奇妙的工作。Symfony2:FOSUserBundle - 單個防火牆,多個登錄表單/入口點

但是,我想要有不止1個登錄表單/頁面。我需要防火牆使用的「標準」/登錄頁面,但我也希望在其他頁面中嵌入表單以便於登錄訪問。

例如,在頁面/ booking/require_login上,我嘗試嵌入FOSUserBundle的登錄表單模板,這很容易。我設置_target_path轉發任何成功的嘗試,很好地工作。但是,如果嘗試登錄失敗,我會將其重定向回標準/登錄表單,而不是保留在我的/ booking/require_login頁面上以呈現適當的錯誤。我看到有一個failure_path參數,但這似乎是全局的東西,而不是您可以作爲參數傳遞的東西,如_target_path

這感覺就像我可能推動一個hacky的方法比它可以去。

我不需要單獨的防火牆,它只是使用相同的一組限制來訪問相同登錄的另一種方法。

任何人都可以提供任何指針乾淨(或簡單!)的方法?

回答

2

您可以注入失敗處理程序(實現AuthenticationFailureHandlerInterface),您可以在其中創建基於請求數據的重定向(例如,基於failure_path post參數重定向到url)。

而且它很容易注入,您只需在DIC配置中創建一個名爲security.authentication.failure_handler的服務。

+0

非常感謝!我前一段時間發現了一種解決方法,但這似乎是一個更好的解決方案,我會試一試:) – Sirhara