Symfony2 FOSUserBundle 两个登录表单错误配置检查路径

Symfony2 FOSUserBundle two login form error configure the check path

我需要 2 个登录表单。

1 -> 主站点 2 -> 我的后端

我已经看到很多关于这个的帖子了。

我尝试这样做,但出现错误: "You must configure the check path to be handled by the firewall using form_login in your security firewall configuration."

但是设置在security.yml

我的路线没问题,我的表格没问题,但我没有看到我的错误在哪里。

这是我的security.yml

admin_login:
        context: backend
        pattern: ^/th-admin/login
        anonymous: true

    admin_check:
        context: backend
        pattern: ^/th-admin/login_check
        anonymous: true

    admin_access_denied:
        context: backend
        pattern: ^/th-admin/access_denied
        anonymous: true

    admin:
        context: backend
        pattern: ^/th-admin

        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            #use_referer: true # this is not needed if you always use default target
            #always_use_default_target_path: true
            #default_target_path: th_admin_dashboard
            login_path: th_admin_login
            check_path: th_admin_check

        logout:
            path:   th_admin_logout
            target: th_admin_login
        anonymous: false
        access_denied_url: th_admin_denied




    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            login_path: fos_user_security_login
            check_path: fos_user_security_check
        logout:       true
        anonymous:    true


access_control:
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/th-admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/th-admin/access_denied, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/th-admin/, role: ROLE_ADMIN }

这是我的fos_user配置:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: TH\UserBundle\Entity\User

这是我的自定义表单:

            {% if error %}
            <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
        {% endif %}


        <form class="m-t" role="form" method="post" action="{{ path("th_admin_check") }}">

            <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

            <div class="form-group">
                <input name="_username" value="{{ last_username }}" type="email" class="form-control" placeholder="{{ 'admin.login.email'|trans }}" required="">
            </div>

            <div class="form-group">
                <input name="_password" type="password" class="form-control" placeholder="{{ 'admin.login.password'|trans }}" required="">
            </div>
            <input type="hidden" name="_submit" value="Login" />

            <button type="submit" class="btn btn-primary block full-width m-b">{{ 'admin.login.login'|trans }}</button>

        </form>

这是我的路线:

th_admin_denied:
    path:     /access_denied
    defaults: { _controller: THAdminBundle:Default:accessDenied }

th_admin_login:
    path:     /login
    defaults: { _controller: FOSUserBundle:Security:login }

th_admin_check:
    path:     /login_check
    defaults: { _controller: FOSUserBundle:Security:check }

th_admin_logout:
    path:     /logout
    defaults: { _controller: FOSUserBundle:Security:logout }

th_admin_dashboard:
    path:     /
    defaults: { _controller: THAdminBundle:Dashboard:index }

我尝试清除缓存,硬清除缓存(使用 rm -rf 清空文件夹)

当我设置另一个检查 url 时,这项工作有效,但会转到主防火墙。 防火墙的主要工作。 但是我的管理员后端防火墙不起作用...

有人知道我的错误在哪里吗?

感谢

我的问题是防火墙配置。

需要在 access_control 中订购并且不会创建无用的防火墙。 谢谢大家的回复。

这是好的配置:

firewalls:

    admin_firewall:
        pattern: ^/th-admin

        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            #use_referer: true # this is not needed if you always use default target
            #always_use_default_target_path: true
            #default_target_path: th_admin_dashboard
            login_path: th_admin_login
            check_path: th_admin_check

        logout:
            path:   th_admin_logout
            target: th_admin_login
        anonymous: ~
        access_denied_url: th_admin_denied


    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            login_path: fos_user_security_login
            check_path: fos_user_security_check
        logout:       true
        anonymous:    true


access_control:
    - { path: /th-admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: /th-admin/access_denied, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/th-admin, role: ROLE_ADMIN }
    - { path: ^/th-admin/$, role: ROLE_ADMIN }
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }