Несколько провайдеров и брандмауэров для входа в систему Symfony 4

У меня есть веб-сайт 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

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

Спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
3 071
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Отлично спасибо ! Теперь мне нужно проверить, как создать новый Authenticator. Спасибо еще раз

Ty Yt 24.03.2019 15:59

У меня был только один поставщик и то же сообщение об ошибке. объявление провайдера мне тоже помогло.

Calamity Jane 19.05.2019 17:18

Другие вопросы по теме