2012-03-03 8 views
2

私は最近、私のSymfony2プロジェクトのセキュリティの設定を開始しました。私は塩を使ってsha256でエンコードすることを決めました。データベースのサンプルアカウント(自己計算sha256 salt/hashを使用)でログインしようとすると、エラーメッセージが表示されずに失敗してしまい、その理由がわかりませんでした。 私はコントローラのloginAction()メソッドに簡単なコードを記述することに決めました。これは、ユーザーが指定されたフォームを使用してログインに失敗したときにSymfony2が呼び出すメソッドです。私は、次のコードを入力:Symfony2セキュリティエンコーダがUserInterfaceインスタンスを認識しない

Catchable Fatal Error: Argument 1 passed to Symfony\Component\Security\Core\Encoder\EncoderFactory::getEncoder() must be an instance of Symfony\Component\Security\Core\User\UserInterface, instance of MyProject\MyBundle\Entity\Users given, called in /var/www/Symfony/src/MyProject/MyBundle/Controller/MainController.php on line 35 and defined in /var/www/Symfony/vendor/symfony/src/Symfony/Component/Security/Core/Encoder/EncoderFactory.php line 33 

だから基本的に、getEncoder()の引数はのインスタンスでなければならないと言っている:私は、ログインしようとしたとき

$factory = $this->get('security.encoder_factory'); 
$em = $this->container->get('doctrine')->getEntityManager(); 
$userRep = $em->getRepository('MyProjectMyBundle:Users'); 
$user = $userRep->find(2); 

$encoder = $factory->getEncoder($user); 
$password = $encoder->encodePassword('cookie', 'thisisasalt'); 
$user->setPassword($password); 
print($password); 

はしかし、Symfony2のは私に次のエラーが発生しましたSymfony\Component\Security\Core\User\UserInterface。だから、ユーザークラスは、実際のUserInterfaceクラスを実装

<?php 
namespace MyProject\MyBundle\Entity; 

use Symfony\Component\Security\Core\User\UserInterface; 
use Doctrine\ORM\Mapping as ORM; 

... 

:私はMyProjectと\ MyBundle \エンティティ\ Users.phpを検査する場合しかし、それは次の行で始まります。 UserInterfaceクラスのすべての関数が含まれています。私はSymfony2のチュートリアルで述べた方法でこれらのファイルをすべて作成しました。 Symfony2がUsersインスタンスをUserInterfaceインスタンスとして認識しない理由は何ですか?

P .:データベースは他の誰かによって作成されたので、私はそれを使用しなければなりません。 Usersテーブルには、UserInterfaceに必要な情報以外の多くの情報が含まれています。

答えて

6

私は馬鹿です。

UserInterfaceクラスをインクルードすることに加えて、クラスがUserInterfaceを実装していることを確認する必要もあります。

私はこれにそれを変更:

class Users implements UserInterface 

それは今完璧に動作します。

+1

私はあなたがばかだと言う事実を+1していません。私は+1ボタンをクリックすると失礼を感じたくありませんでした:) - このメッセージは 'UserInterface'を実装していないばかから来たものですか? –

関連する問題