Я пытаюсь выдавать себя за других пользователей в Symfony, но отличается от других примеров, таких как Symfony impersonation – отдельные брандмауэры и отдельные поставщики пользователей , в моем случае это не только поставщик, но и хост.
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
Таким образом, с этой настройкой, когда я пытаюсь олицетворять пользователя, он остается на админ-сайте, и, конечно, клиент, который был правильно подобран, не может аутентифицироваться на стороне администратора. При переходе к клиенту, конечно, сеанса аутентификации там нет.
Я попытался поставить хост для системы, чтобы знать, где олицетворять «in» без везения.
Я мог бы упасть до слушателя, упомянутого в http://symfony.com/doc/current/security/impersonating_user.html#events, но я не нашел подробностей о том, как это сделать.
Есть идеи? Заранее спасибо.
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%