2016-10-20 3 views
-1

저는 Formfuilder와 함께 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() 
    ]); 
} 

모든 신청은 DB에 입력됩니다. 이지만 암호는 암호화되지 않습니다.

어떻게 암호를 암호화 할 수 있습니까?

감사

답변

0

당신은 문서를 따라야은 : How to implement a registration form.

는 기본적으로, 당신의 RegisterType는 기본 클래스 UserInterface를 구현하고 양식을 저장할 때 암호를 암호화해야 User이 있어야합니다.

0

symfony 2.7에는 MessageDigestPasswordEncoder라는 클래스가 있습니다. 당신은 YAML과 security.yml의 내용을 분석하여 security.yml의 구성 파크는 $ 알고리즘의 가치 $ 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을 사용할 수 있습니다.