symfony模仿不同的主机

时间:2016-12-14 23:27:04

标签: php symfony impersonation

我试图冒充Symfony中的不同用户,但与Symfony impersonation - separate firewalls and separate user providers等其他示例不同,在我的情况下,不仅是提供商与主机不同,而是主机。

firewalls:
   admin:
        pattern: ^/
        host: "%host_admin%"
        provider: admin
[...]
      switch_user:
        role: ROLE_ADMIN
        provider: client
        #host: "%host_public%" <-- tried this.. does not work
        context: cmb_context

   client:
        pattern: ^/
        host: "%host_public%"
        provider: client
[...]
      switch_user:
        role: ROLE_ADMIN
        provider: client
        context: cmb_context

因此,当我尝试模拟用户时,通过此设置,它仍然保留在管理员站点中,当然还有正确选择的客户端,无法在管理员端进行身份验证。当移动到客户端时,当然不存在auth会话。

我尝试让系统的主机知道在哪里冒充&#34;在&#34;没有运气。

我可能不得不接受http://symfony.com/doc/current/security/impersonating_user.html#events中提到的听众,但我还没有找到有关如何做到这一点的详细信息。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

chainUserProvider允许您将一个或多个用户提供程序添加到一起,以便您可以从这些多个来源中获取用户。请注意,将提供程序添加到ChainUserProvider的顺序很重要:只要找到用户,它就会检查该用户,即使该用户的凭据失败也是如此。

parameters:
    chain_providers: "mydatabase1,mydatabase2"

security:
    providers:
        mydatabase1:
            entity:
                class: My\UserBundle\Entity\Admin
                property: username

        mydatabase2:
            entity:
                class: My\UserBundle\Entity\Customer
                property: username

        my_chain:
            chain:
                providers: %chain_providers%