所以我添加了实体管理器作为参数:
$container->setDefinition('ldap.security.authentication.provider',
new Definition('Client\IntranetBundle\LDAP\LDAPAuthenticationProvider', array(
new Reference("ldap_user_provider"),
new Reference("ldap_manager")
)))
->addArgument("ldap.security.authentication.provider")
->addArgument("doctrine.orm.entity_manager");
但是在我的课堂上,如果我回应这个论点,我得到的就是这个字符串:secured_area
如何获得实际的实体经理?
这是构造方法:
public function __construct(LDAPUserProvider $userProvider, LDAPManagerInterface $ldapManager, $entityManager, $providerKey) {
//var_dump($userProvider);
//var_dump($ldapManager);
//var_dump($entityManager);
//var_dump($providerKey);
$this->userProvider = $userProvider;
$this->ldapManager = $ldapManager;
$this->entityManager = $entityManager;
$this->providerKey = $providerKey;
}
$ entityManager的var_dump是字符串(12)“secured_area”
和
$ providerKey的var_dump是string(37)“ldap.security.authentication.provider”
答案 0 :(得分:0)
$container->setDefinition('ldap.security.authentication.provider',
new Definition('Client\IntranetBundle\LDAP\LDAPAuthenticationProvider', array(
new Reference("ldap_user_provider"),
new Reference("ldap_manager"),
new Reference("doctrine.orm.entity_manager"),
/* Here you should pass providerKey */
)))
这是如何定义服务的,但我建议您在创建自定义身份验证提供程序之前阅读http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html。