2016-10-20 123 views
-1

我在FormBuilder中使用symfony 3。Symfony加密密碼

現在我創建登記表..

一個問題,我得到它的使用編碼

今天我使用這樣加密的密碼:

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() 
    ]); 
} 

每一個申請是輸入到數據庫。 但密碼未加密。

我該如何加密密碼?

感謝

回答

0

您應該按照文檔:How to implement a registration form.

基本上,你的RegisterType應該有一個默認的類,它實現UserInterface,當你保存表單密碼應該被加密的User

0

在symfony 2.7中有一個名爲MessageDigestPasswordEncoder的類。

所以,你可以得到一個編碼器:

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

您可以填寫$算法和值,$ encode_as_base64 $迭代蒙山您security.yml解析security.yml與YAML內容的配置: :解析。或者簡單地使用在那裏定義的相同值。

一旦你的enconder,調用該方法encodePassword

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

與您的編碼器相同的配置返回編碼的密碼。請注意,您必須提供$ salt值。按照建議您可以使用random_bytes