我试图冒充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中提到的听众,但我还没有找到有关如何做到这一点的详细信息。
有什么想法吗?提前谢谢。
答案 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%