Symfony链提供商FOSUser LDAPUser

Symfony链提供商FOSUser LDAPUser,ldap,symfony4,fosuserbundle,provider,Ldap,Symfony4,Fosuserbundle,Provider,我想在我的网站上使用两个用户提供商。首先,我希望对LDAPProvider进行测试,如果用户在LDAP中不存在,则会调用FOSUserProvider以查看该用户是否存在于数据库中。我知道我需要使用chainProviders。这是我到目前为止所做的。 LDAP连接工作正常。security.yaml: security: providers: chain_provider: chain: providers: [fos_userbundle, i

我想在我的网站上使用两个用户提供商。首先,我希望对LDAPProvider进行测试,如果用户在LDAP中不存在,则会调用FOSUserProvider以查看该用户是否存在于数据库中。我知道我需要使用chainProviders。这是我到目前为止所做的。 LDAP连接工作正常。security.yaml:

security:
providers:
    chain_provider:
        chain:
            providers: [fos_userbundle, intranet_ldap]
    from_database:
        entity:
            class: App\Entity\User
            property: username
    fos_userbundle:
        id: fos_user.user_provider.username #fos_user.user_manager
    intranet_ldap:
        #Test avec surcharge LdapUserProvider
        id: App\Security\LdapUserProvider
firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        admin:
            pattern:            /admin(.*)
            context:            user
            form_login:
                provider:       fos_userbundle
                login_path:     /admin/login
                use_forward:    false
                check_path:     /admin/login_check
                failure_path:   null
            logout:
                path:           /admin/logout
                target:         /admin/login
            anonymous:          true
            #switch_user: true
        main:
            pattern:            ^/
            context:            user
            anonymous:          true
            form_login_ldap:
                service:        Symfony\Component\Ldap\Ldap
                provider:       intranet_ldap
                login_path:     /login
                check_path:     /login_check
                dn_string:      'DC=xxx-group, DC=lan'
                query_string:   '(&(sAMAccountName={username}))'
                use_forward:    false
                always_use_default_target_path: true
                default_target_path: /profile
                use_referer:    true
            logout:
                path:  /logout
                target: /
在fos_user.yaml中:

fos_user:
  db_driver: orm # other valid values are 'mongodb' and 'couchdb'
  firewall_name: main
  user_class: App\Entity\User

  group:
    group_class:   App\Entity\Group
    group_manager: sonata.user.orm.group_manager # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb)
  service:
    user_manager: sonata.user.orm.user_manager
我不工作。我想我忘了什么。LDAP仍然可以,但数据库中的用户不行

我想知道这是否与表单登录有关。来自FOSUserBundle的表单登录用于admin,表单登录用于main。如何两者兼用? 另外,我有一个类LdapUser和一个扩展Sonata\UserBundle\Entity\BaseUser的User类,也许它应该扩展FOSUser\Entity\BaseUser

谢谢你的帮助