2012-05-09 13 views
0

からloadUserByUsernameをsymfonyの2セキュリティコンポーネント:コントローラ

loadUserByUsernameサービスまたは何か他のクリーン介して、コントローラのアクションから

(セキュリティ設定に依存UserProviderInterface実装の方法)を使用する方法はありますでしょうか?

私はFOSUserBundle

感謝を使用しないでください!ネイティブEntityUserProviderとして

答えて

0

は、あなた自身の公共サービスであなたの方法のloadUserByUsernameを定義し、EntityUserProviderからそれを呼び出す場合、あなたはどのContainerAwareクラスからそれを使用することができ、それは可能ではない、抽象です...しかし。

+0

感謝を行うことができます! 実際には、ユーザー名からユーザーを取得するために、セキュリティコンポーネントの動作を使用するだけで済みます。 – Glutamatt

+0

私は多くのプロバイダ(チェーン)を設定しました...だから私は既存のchainedproviderを維持したいと考えています – Glutamatt

0

AFAIK Symfony2は、登録されたユーザープロバイダに直接アクセスすることはできません。一つの汚いやり方としては、例えば

//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) 
} 

DependencyInjection/BundleExtension.phpload()方法でsecurity.ymlを解析し、コントローラに、あなたはペツェ@

$mapping = $this->container->getParameter('provider.mappings'); 
$providerKey = $this->get('security.context')->getToken()->getProviderKey(); 
$user = $mapping[$providerKey]->loadUserByUsername('user_name'); 
+0

ありがとう@ m2mdas、私はこれを試してあなたに連絡をとるよ! – Glutamatt

関連する問題