У меня есть веб-сайт Symfony 4 с пользователями и процессом входа в систему. Я хотел бы добавить новую сущность «клиент» и разрешить клиенту войти в систему, используя тот же процесс, что и пользователь.
Когда я пытаюсь отредактировать файл безопасность.yaml, у меня возникает эта ошибка: Отсутствие явной настройки провайдера для «сторожевого» прослушивателя на «основном» брандмауэре неоднозначно, поскольку существует более одного зарегистрированного провайдера.
Мои кодировщики объявлены:
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
Я пробовал по-другому объявить новый брандмауэр, но он не работает. Можно ли использовать один и тот же процесс безопасности для двух поставщиков? Я что-то пропустил ?
Спасибо




вам следует добавить провайдера к вашему брандмауэру, так как у вас более одного провайдера, symfony не знает, какой из них вы хотите использовать, поэтому попробуйте настроить брандмауэр следующим образом.
main:
logout:
path: app_logout
anonymous: true
provider: app_user_provider
guard:
authenticators:
- App\Security\LoginFormAuthenticator
не забудьте кешировать: очистить вы можете найти его в их документе здесь
У меня был только один поставщик и то же сообщение об ошибке. объявление провайдера мне тоже помогло.
Отлично спасибо ! Теперь мне нужно проверить, как создать новый Authenticator. Спасибо еще раз