如何创建第二个form_login来验证用户

时间:2016-02-01 11:22:16

标签: symfony security firewall

我想创建第二个form_login来验证我的用户,但使用相同的模式。 这是我的security.yml

的一部分
frontend:
    context: frontend
    pattern: ^/
    form_login:
        provider: fos_clientbundle
        csrf_provider: form.csrf_provider
        login_path : client_login
        check_path : client_check
        failure_path : null
        default_target_path : client_userprofile   
    form_login:
        provider: fos_clientbundle
        csrf_provider: form.csrf_provider
        login_path : ecommerce_front_checkout
        check_path : ecommerce_check
        failure_path : null
        default_target_path : ecommerce_front_checkout                     
    logout:       
      path : client_logout
      target : client_login
    anonymous:    true

但它不起作用!! 我在网上搜索但我找不到解决方案。

要求用户可以通过主登录页面连接,也可以在另一个页面上进行连接,如电子商务页面!!

我希望你能帮助我。 非常感谢你

2 个答案:

答案 0 :(得分:0)

您可以创建两个不同的控制器(或Actions),它们都扩展了BaseSecurityController,只是覆盖了renderLogin动作(如果你需要覆盖一些东西,还可以覆盖任何其他动作)。

在路由

中定义两个控制器

的routing.yml:

login:
    path: /{_locale}/login
    defaults: { _controller: ApplicationSonataUserBundle:SecurityFOSUser1:login }

loginForm:
    path: /{_locale}/login_frm
    defaults: { _controller: ApplicationSonataUserBundle:AnotherSecurityFOSUser1:login }

然后只需在树枝上显示表格:

{% render url('loginForm') %}

答案 1 :(得分:0)

我找到了解决方案。非常容易! 在我的第二种形式中,我必须在我的表单中添加default_target_path和failure_path,例如:

<input type="hidden" name="_target_path" value="ecommerce_front_checkout" />
<input type="hidden" name="_failure_path" value="ecommerce_front_checkout" />

非常感谢你的帮助!!