Symfony2-在Auth提供程序中获取EntityManager


Symfony2 - get EntityManager in Auth Provider

我已经创建了一个自定义身份验证提供程序。有没有一种方法可以在身份验证提供程序或侦听器中获取实体管理器?

我知道你可以在UserProvider中获得它,但事实是,我只想在凭据正确时刷新用户(我根据windows服务器Active Directory进行身份验证)

是的,您可以在服务定义中注入实体管理器,例如:

services:
    wsse.security.authentication.provider:
        class: Acme'DemoBundle'Security'Authentication'Provider'WsseProvider
        arguments: ["", "%kernel.cache_dir%/security/nonces", "@doctrine.orm.entity_manager"]

然后在WsseProvider内部调整__construct方法:

private $em;
public function __construct(UserProviderInterface $userProvider, $cacheDir, EntityManager $em)
{
    $this->userProvider = $userProvider;
    $this->cacheDir     = $cacheDir;
    $this->em           = $em;
}