0

有没有办法使用

loadUserByUsername(UserProviderInterface 实现方法取决于安全配置)

通过服务或其他干净的东西从控制器操作?

我不使用 FOSUserBundle

谢谢 !!

4

2 回答 2

0

由于本机 EntityUserProvider 是抽象的,因此不可能......但是,如果您在自己的公共服务中定义您的方法 loadUserByUsername 并从 EntityUserProvider 调用它,则可以从任何 ContainerAware 类中使用它。

于 2012-05-09T12:18:47.240 回答
0

AFAIK Symfony2 不会直接访问已注册的用户提供商。一种肮脏security.yml的方法是,用例如load()方法解析DependencyInjection/BundleExtension.php

//DependencyInjection/BundleExtension.php
public function load(array $configs, ContainerBuilder $container)
{
    //...
    //parse security.yml
    //create an array mapping each provider keys in the firewall to the providers 
    //set the array as global parameter using $container->setParameter('provider.mappings', $array)
}

然后在控制器中你可以做

$mapping = $this->container->getParameter('provider.mappings');
$providerKey = $this->get('security.context')->getToken()->getProviderKey();
$user = $mapping[$providerKey]->loadUserByUsername('user_name');
于 2012-05-09T18:53:56.363 回答