Symfony выдавать себя за разных хостов

Я пытаюсь выдать себя за другого пользователя в Symfony, но отличается от других примеров, таких как Подражание Symfony — отдельные брандмауэры и отдельные провайдеры пользователей, в моем случае это не только другой поставщик, но и хост.

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

Таким образом, при такой настройке, когда я пытаюсь выдать себя за пользователя, он остается на сайте администратора и, конечно, клиент, правильно подобранный, не может пройти аутентификацию на стороне администратора. Конечно, при переходе к клиенту сеанс аутентификации там отсутствует.

Я попытался поставить хост для системы, чтобы знать, где выдавать себя за «в» без удачи.

Я мог бы упасть на слушателя, упомянутого в http://symfony.com/doc/current/security/impersonating_user.html#events но я не нашел подробностей о том, как это сделать.

Есть идеи? Заранее спасибо.

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%
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]