2016-10-20 8 views
-1

私はFormBuilderでsymfony 3を使用しています。Symfony暗号化パスワード

今私は、登録フォームを作成します..私はそれがパスワードに私はこのような使用してい

今日暗号化するためにエンコードを使用するのget

一つの問題:

public function SignupAction(Request $request){ 
    $form = $this->createForm(RegisterType::class); 
    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()){ 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($form->getData()); 
     $em->flush(); 
     return $this->redirectToRoute('homepage'); 
    } 
    return $this->render('AppBundle:Site:Register.html.twig', [ 
     'form' => $form->createView() 
    ]); 
} 

はすべての提出がありますDBに入力します。 パスワードは暗号化されていません。

どのようにパスワードを暗号化できますか?

おかげで

答えて

0

あなたがドキュメントに従ってください:How to implement a registration form.

を基本的には、あなたのRegisterTypeUserInterfaceを実装し、フォームを保存するときにパスワードが暗号化されなければならないUserデフォルトのクラスを持っている必要があります。

0

symfony 2.7には、MessageDigestPasswordEncoderという名前のクラスがあります。あなたはYAMLでsecurity.ymlファイルの内容を解析し、あなたにsecurity.ymlの設定whith $アルゴリズムの値は、$ encode_as_base64と$繰り返しを埋めることができ

$encoder = new \Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder($algorithm,$encode_as_base64, $iterations); 

だから、エンコーダーを取得することができます: :解析する。または、そこに定義された同じ値を使用するだけです。

あなたはenconderを持っていたら、メソッドを呼び出すには、お使いのエンコーダの同じ設定でエンコードされたパスワードを返す

$password = $encoder->encodePassword($password, $salt) 

をencodePassword。 $ salt値を指定する必要があります。提案されているようにrandom_bytesを使用することができます。

関連する問題