【发布时间】:2013-05-18 14:41:46
【问题描述】:
我尝试使用 silex 文档 - Defining a custom Authentication Provider 为 LDAP 身份验证编写自定义身份验证提供程序。
但是如果我查看$app['security.authentication_providers'] 有两个提供者。我定义的一个App\LdapAuthenticationProvider 和一个Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider
当我尝试授权用户时,我收到错误,因为从类 DaoAuthenticationProvider 调用了 App\LdapUserProvider::loadUserByUsername()。
如果我在$app['security.authentication_providers'] 中只有一个提供者,我想我应该不会出错,因为我的 LDAP 提供者不调用 loadUserByUsername。
这里是$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)
那么,有谁知道为什么会有额外的提供者,我该如何摆脱它?
有bootstraping application、LdapAuthenticationListener和LdapAuthenticationProvider的代码。
【问题讨论】:
标签: authentication silex