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

时间:2013-07-22 04:02:22

标签: symfony

我的应用需要2个防火墙,一个用于管理员,另一个用于用户。在我的security.yml中我配置:

    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:    ~

我不知道这个配置是否正确。当我从主要区域登录时,一切正常,但是当我从 admin 登录时,它会将我重定向到主路径而不是 default_target_path 。我尝试将提供程序更改为自定义提供程序(例如in_memory)以重新检查 admin 防火墙,但我仍然是用户从fos_userbundle提供程序登录。你能救我吗?

3 个答案:

答案 0 :(得分:1)

我认为这是因为有一个主要模式 主要:         模式:^ / 它甚至可以控制^ / admin 尝试用^ / home或^ / main替​​换^ /它将在

上工作

答案 1 :(得分:0)

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

Symfony2中的安全性是级联的(所以/ admin也会出现在main下)

e.g。     标准用户的#defaut登录区域     主要:         模式:^ /         form_login:             提供者:fos_userbundle             csrf_provider:form.csrf_provider         登出:             路径:/ 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] }

您可能需要指定不同的ROLES。

答案 2 :(得分:0)

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

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

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