簡體   English   中英

Symfony 2安全組件:使用控制器中的loadUserByUsername

[英]Symfony 2 Security Component : use loadUserByUsername from controller

有沒有辦法使用

loadUserByUsername(UserProviderInterface實現的方法,取決於安全性配置)

從控制器通過服務或其他清潔措施的行為?

我不使用FOSUserBundle

謝謝 !!

由於本機EntityUserProvider是抽象的 ,所以不可能...但是,如果您在自己的公共服務中定義方法loadUserByUsername並從EntityUserProvider調用它,則可以從任何ContainerAware類使用它。

AFAIK Symfony2不能直接訪問已注冊的用戶提供者。 一種骯臟的方法是,在DependencyInjection/BundleExtension.php load()方法中解析security.yml ,例如

//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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM