Symfony2: FOSUserBundle -单一防火墙,多个登录表单/入口点


Symfony2: FOSUserBundle - Single firewall, multiple login forms/entry points

我有一个symfony2应用程序,它使用一个用FOSUserBundle配置的防火墙来处理后端用户持久性。

然而,我想有不止一个登录表单/页面。我需要防火墙使用的"标准"/登录页面,但我也想在其他页面中嵌入表单,以便更方便地登录访问。

例如,在页面/booking/require_login上,我尝试从FOSUserBundle嵌入登录表单模板,这很容易。我将_target_path设置为转发任何成功的尝试,这很好地工作。但是,如果尝试登录失败,我将被重定向回标准的/login表单,而不是留在my/booking/require_login页面上以显示适当的错误。我看到有一个failure_path参数,但这似乎是全局的东西,而不是像_target_path这样的参数可以传递。

让人感觉我可能把一种过时的方法推得太远了。

我不需要一个单独的防火墙,它只是用相同的限制访问相同登录的另一种方式。

谁能提供一些干净(或简单!)的方法?

你可以注入失败处理程序(实现AuthenticationFailureHandlerInterface),在那里你可以创建一个基于请求数据的重定向(例如基于failure_path post参数重定向到url)。

注入它非常容易,你只需要在DIC配置中创建一个名为security.authentication.failure_handler的服务。