silex のドキュメントを使用して、LDAP 認証用のカスタム認証プロバイダーを作成しようとしています -カスタム認証プロバイダーの定義。
しかし、調べてみると$app['security.authentication_providers']
、2 つのプロバイダーがあります。私が定義App\LdapAuthenticationProvider
したものと Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider
App\LdapUserProvider::loadUserByUsername()
そして、クラス DaoAuthenticationProvider からの呼び出しがあるため、ユーザーを承認しようとするとエラーが発生します。
$app['security.authentication_providers']
LDAP プロバイダーが loadUserByUsername を呼び出さないため、プロバイダーが 1 つしかない場合、エラーは発生しないはずです。
ここにダンプがあります$app['security.authentication_providers']
array (size=2)
0 => object(App\LdapAuthenticationProvider)[194]
private 'userProvider' =>
object(App\LdapUserProvider)[176]
private 'ldap' => resource(57, ldap link)
private 'defaultRoles' =>
array (size=1)
...
private 'providerKey' => string 'default' (length=7)
1 => object(Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider)[195]
private 'encoderFactory' =>
object(Symfony\Component\Security\Core\Encoder\EncoderFactory)[197]
private 'encoders' =>
array (size=1)
...
private 'userProvider' =>
object(App\LdapUserProvider)[176]
private 'ldap' => resource(57, ldap link)
private 'defaultRoles' =>
array (size=1)
...
private 'hideUserNotFoundExceptions' (Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider) => boolean true
private 'userChecker' (Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider) => object(Symfony\Component\Security\Core\User\UserChecker)[196]
private 'providerKey' (Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider) => string 'default' (length=7)
それで、なぜ余分なプロバイダーがあるのか 、どうすればそれを取り除くことができるのか、誰かが知っていますか?
application、LdapAuthenticationListener、およびLdapAuthenticationProviderをブートストラップするためのコードがあります。