Я занимаюсь разработкой и применением в Symfony, с широким доступом, где пользователи входят в систему с помощью формы входа в систему и раздела администрирования с другой формой входа и другим провайдером пользователей.
Я создал LoginFormAuthenticator для каждогообласти, и два межсетевых экрана, чтобы выбрать правильный аутентификатор в каждой области.Это мой security.yaml:
security: провайдеры: admin_provider: сущность: класс: App \ Entity \ AdminUser свойство: электронная почта web_provider: entity: class: App \ Entity \ Свойство пользователя: электронная почта
firewalls:
admin:
pattern: '^/admin'
anonymous: true
provider: admin_provider
guard:
authenticators:
- App\Security\AdminLoginFormAuthenticator
logout:
path: /admin/logout
target: /
main:
anonymous: true
provider: web_provider
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path: /logout
Теперь я добавляю / api в проект, и оба пользователя должны иметь возможность доступа, по-разному управляя правами доступа, если пользователь является публичным или администратором.
При разработкеконтроллер в области / api, я не могу получить пользователя при входе в систему через администратора.
Вопрос в том, как в / api я могу получить AdminUser, если он вошел в систему или пользователя (вэтот порядок) при доступе к $ this-> getuser () или $ this-> denyAccessUnlessGranted ()?
Я пытался добавить App \ Security \ AdminLoginFormAuthenticator в главный брандмауэр и добавить chain_provider в main.provider,Но это не работает.
Спасибо.