如何在Symfony 3.4中管理多个防火墙

时间:2018-06-19 12:49:33

标签: symfony security firewall

我正在尝试使用其他用户的角色来管理前端和后端。在security.yml内部添加了此

security:
    providers:
        admin:
            entity:
                class:      LoginBundle:Usuarios
                property:   mail
        external:
            entity:
                class:      LoginBundle:UsuariosExternos
                property:   mail

    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            provider: admin
            form_login:
                login_path: /
            logout:
                path:   logout
                target: /
            access_denied_url: /eu/
        external:
            anonymous: true
            provider: external
            form_login:
                login_path: /
            logout:
                path:   logoutExternalUser
                target: /

使用此编码解码器时,外部防火墙不起作用,当我作为外部(前端)登录时,注销路径为/ logout而不是logoutExternalUser。 同样使用此配置,如果我写路径/ admin,它将转到/而不是/ admin / login 我们尝试使用AccessDeniedHandlerInterface,但我们不知道如何在该实例中获取用户角色。

有帮助吗?

1 个答案:

答案 0 :(得分:3)

您缺少模式。这就是为什么防火墙没有启动。

您应该设置其监听的模式。

检查,我更新了代码。

security:
providers:
    admin:
        entity:
            class:      LoginBundle:Usuarios # idk if you realized this correctly
            property:   mail
    external:
        entity:
            class:      LoginBundle:UsuariosExternos
            property:   mail

firewalls:
    admin:
        pattern: ^/admin # pattern in which this will activate
        anonymous: true
        provider: admin
        form_login:
            login_path: adminLogin # implement route
        logout:
            path:   security_logout # should work and destroy session
            target: /
        access_denied_url: /eu/
    external:
        pattern: ^/external
        anonymous: true
        provider: external
        form_login:
            login_path: loginExternal # implement route
        logout:
            path:   security_logout 
            target: /

我建议您检查https://symfony.com/doc/3.4/security/guard_authentication.html

如果默认安全性对您不起作用,这是一种构建所需身份验证的好方法。