Несколько провайдеров и брандмауэров для входа Symfony 4 - PullRequest
1 голос
/ 24 марта 2019

У меня есть сайт Symfony 4 с пользователями и процессом входа. Я хотел бы добавить новую сущность «клиент» и позволить клиенту войти в систему, используя тот же процесс, что и пользователь.

Когда я пытаюсь отредактировать файл security.yaml , у меня появляется эта ошибка: Я не могу явно указать провайдера для прослушивателя "guard" на "основном" брандмауэре, так как чем один зарегистрированный провайдер.

Мои кодировщики объявлены:

encoders:
        App\Entity\User:
            algorithm: bcrypt
        App\Entity\Client:
            algorithm: bcrypt

Мои провайдеры также: провайдеры:

app_user_provider:
    entity:
        class: App\Entity\User
        property: email
        manager_name: user
app_customer_provider:
    entity:
        class: App\Entity\Customer
        property: email
        manager_name: customer

И главный брандмауэр:

main:
            logout:
                path: app_logout
            anonymous: true
            guard:
                authenticators:
                    - App\Security\LoginFormAuthenticator

Я пытался объявить новый брандмауэр другим способом, но он не работает. Можно ли использовать один и тот же процесс безопасности для двух провайдеров? Я что-то упустил?

Спасибо

1 Ответ

3 голосов
/ 24 марта 2019

вам следует добавить провайдера в ваш брандмауэр, так как у вас более одного провайдера, Symfony не знает, какой из них вы хотите использовать, поэтому попробуйте настроить ваш брандмауэр следующим образом

 main:
  logout:
      path: app_logout
  anonymous: true
  provider: app_user_provider
  guard:
     authenticators:
           - App\Security\LoginFormAuthenticator

не забудьте кешировать: clear Вы можете найти это в их документе здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...