Symfony 2安全组件:使用来自控制器的loadUserByUsername

时间:2012-05-09 09:39:08

标签: php security symfony

有没有办法使用

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

从控制器操作通过服务或其他东西清理?

我不使用FOSUserBundle

谢谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

AFAIK Symfony2无法直接访问已注册的用户提供商。一种肮脏的方式是,在security.yml的{​​{1}}方法中解析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)
}