Symfony 多个防火墙(管理员和用户)

Symfony 多个防火墙(管理员和用户),symfony,Symfony,我的应用程序需要2个防火墙,一个用于管理员,另一个用于用户。在my security.yml I config中: admin: pattern: ^/admin provider: fos_userbundle form_login: login_path: /admin/login use_forward: false check_p

我的应用程序需要2个防火墙,一个用于管理员,另一个用于用户。在my security.yml I config中:

    admin:
        pattern:      ^/admin
        provider:     fos_userbundle
        form_login:
            login_path:     /admin/login
            use_forward:    false
            check_path:     /admin/login_check
            failure_path:   null
            default_target_path: /admin/dashboard
            always_use_default_target_path: true
        logout:
            path:     /admin/logout
            target: /admin
        anonymous: ~

    # defaut login area for standard users
    main:
        pattern:      ^/
        form_login:
            provider:       fos_userbundle
            csrf_provider:  form.csrf_provider
        logout:
            path:     /logout
        anonymous:    ~

我不知道这个配置是否正确。当我从main区域登录时一切正常,但当我从admin登录时,它会将我重定向到主路径,而不是默认的目标路径。我尝试将提供程序更改为自定义提供程序(例如在内存中)以重新检查管理防火墙,但我仍然从fos\u userbundle提供程序按用户登录。你能帮我吗?

尝试删除匿名,改用访问控制。理论上,Symfony2将自动将用户从管理员重定向回管理员,即使他们使用相同的登录屏幕

Symfony2中的安全性是级联的(so/admin也将出现在main下)

e、 g。 #为标准用户定义登录区域 主要内容: 模式:^/ 表格(u)登入: 提供商:fos_用户包 csrf\u提供程序:form.csrf\u提供程序 注销: 路径:/logout

admin:
    pattern:      ^/admin
    provider:     fos_userbundle
    form_login:
        use_forward:    false
        failure_path:   null
        target: /admin/dashboard
        always_use_default_target_path: true
    logout:
        target: /admin

 access_control:
    - { path: ^/, roles: [IS_AUTHENTICATED_ANONYMOUSLY, ROLE_USER] }
    - { path: ^/admin, roles: [ROLE_ADMIN] }

您可能需要指定不同的角色。

我认为这是因为有一个主模式 主要内容: 模式:^/ 它甚至可以控制^/admin
尝试将^/替换为^/home或^/main,这两种模式都可以使用

我将主防火墙模式更改为^/(?!admin),现在一切正常。谢谢你的帮助

    main:
        pattern:      ^/(?!admin)
        provider:       default_provider
        anonymous:    ~

    admin:
        pattern:      ^/admin
        provider:     admin_provider
        anonymous:    ~

非常感谢。我尝试更改我的配置作为您的指南,但当我转到page/admin时,它会将我重定向到主防火墙中的/login页面。我需要2个登录页面,用于2个防火墙,其中有2个独立的提供程序。your security.yml列出了相同的提供程序(fos_userbundle)。请尝试,只需“target:/admin/dashboard”