Я использую два объекта User (пользователи сайта) и Official (рабочие с доступом к защищенной части сайта) для хранения пользователей. Все пользователи хранят в Doctrine. Поставщики конфигурации I в security.yaml
security:
encoders:
App\Entity\User:
algorithm: auto
App\Entity\Official:
algorithm: auto
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email
app_official_provider:
entity:
class: App\Entity\Official
property: email
all_users:
chain:
providers: ['app_user_provider','app_official_provider']
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: true
pattern: ^/
lazy: true
provider: all_users
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path: app_logout
Пользователи из App\Entity\User
прошли аутентификацию, но аутентификация пользователей из App\Entity\Official
завершилась неудачно с ошибкой «Не удалось найти электронную почту».
I решите создать другую форму входа и перенастроить security.yaml
security:
encoders:
App\Entity\User:
algorithm: auto
App\Entity\Official:
algorithm: auto
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email
app_official_provider:
entity:
class: App\Entity\Official
property: email
all_users:
chain:
providers: ['app_user_provider','app_official_provider']
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
anonymous: false
pattern: ^/admin
guard:
authenticators:
- App\Security\AdminLoginFormAuthenticator
provider: app_official_provider
logout:
path: admin_app_logout
main:
anonymous: true
pattern: ^/
lazy: true
provider: all_users
guard:
authenticators:
- App\Security\LoginFormAuthenticator
logout:
path: app_logout
Когда я перехожу к / a_login и пытаюсь войти, страница перезагружается ... в панели отладки я вижу, что пользователи аутентифицированы. Но когда я перехожу к / admin, страница перенаправляется на / a_login в dev.log, я вижу:
[2020-06-19T15:41:27.715605+03:00] security.DEBUG: Guard authenticator does not support the request. {"firewall_key":"main","authenticator":"App\\Security\\AdminLoginFormAuthenticator"} []
[2020-06-19T15:41:27.758297+03:00] security.DEBUG: Read existing security token from the session. {"key":"_security_main","token_class":"Symfony\\Component\\Security\\Guard\\Token\\PostAuthenticationGuardToken"} []
[2020-06-19T15:41:27.817178+03:00] doctrine.DEBUG: SELECT t0.id AS id_1, t0.email AS email_2, t0.roles AS roles_3, t0.password AS password_4, t0.fam AS fam_5, t0.im AS im_6, t0.ot AS ot_7, t0.department_id AS department_id_8, t0.post_id AS post_id_9 FROM official t0 WHERE t0.id = ? [2] []
[2020-06-19T15:41:27.824179+03:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider","username":"test_w@test.com"} []
Что я могу сделать, чтобы это исправить?