我使用两个实体User(站点的用户)和Official(对站点具有受保护部分的访问权限的工人) 存储用户。 所有用户都存储在Doctrine中。 security.yaml中的I config提供程序
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
的用户身份验证失败,并显示错误“找不到电子邮件”。
我决定创建另一个登录表单并重新配置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"} []
该如何解决?