2017-10-22 8 views
1

Symfony 2.6では、以下のメソッドを使用してパスワードをエンコードしています。パスワードは正常にエンコードされ、DBに保存されます。symfony security.password_encoder isPasswordValidが空に戻る

$encoder = $this->container->get('security.password_encoder'); 
$encodedPwd = $encoder->encodePassword($adminUser, $plainPassword); 

私は次のようにログインフォームに提供されたユーザー入力したパスワードを検証しよう:

$adminUser = $this->getDoctrine()->getManager()->getRepository("AcmeUserBundle:AdminUser")->findOneBy(array('username' => $_username)); 
$_password = $request->request->get('_password'); 

$encoder = $this->container->get('security.password_encoder'); 
echo $encoder->isPasswordValid($adminUser, $_password)) 

最後の行は常にパスワードが検証取得されていないことを意味し、空に戻っています。 私はこれをSymfonyのドキュメントから手に入れ、同様の問題に遭遇した人は誰でも検索しましたが、見つからないようです。 いずれか1つの洞察をお願いしますか?

ありがとうございます! Sharad

答えて

0

Okこのような解決策が見つかりました。それは誰も似たような問題に遭遇するのを助けることを望みます。

パスワードをコード化するために、私は次のことをやっている:

$factory = $this->get('security.encoder_factory'); 
$encoder = $factory->getEncoder($user); 
$encodedPwd = $encoder->encodePassword($plainPassword, $user->getSalt()); 

をパスワードを検証するために、私は次のことをやっている:

$factory = $this->get('security.encoder_factory'); 
$encoder = $factory->getEncoder($user); 
echo $encoder->isPasswordValid($user->getPassword(), $_password, $user->getSalt()) 

パスワードをコードする一方で、私は使用していませんでした塩ですが、それは重要です、 それはすべて今動作します。

ありがとうございます シャレード

関連する問題