2011-08-05 5 views
2

당신은 당신이 사용자 정보를 저장할 수있는 사용자 정보를 저장하는 데이터베이스를 사용하는 경우 : (. the Symfony security book에서) Symfony2 코드 구성 : db를 유지하기 전에 암호를 암호화하는 논리는 어디에 있습니까? 아래 그림과 같이

$factory = $this->get('security.encoder_factory'); 
$user = new Acme\UserBundle\Entity\User(); 

$encoder = $factory->getEncoder($user); 
$password = $encoder->encodePassword('mypassword', $user->getSalt()); 
$user->setPassword($password); 

는 그러나, 나는 재사용 가능한 사용자 양식을 만들려면 :

namespace App\Bundle\WebBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 

class UserType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('username') 
      ->add('password') 
     ; 
    } 

    public function getName() 
    { 
     return 'app_bundle_webbundle_usertype'; 
    } 
} 

을 및 제어부에서 폼을 사용

if ($request->getMethod() == 'POST') { 
    $form->bindRequest($request); 

    if ($form->isValid()) { 
     $em = $this->getDoctrine()->getEntityManager(); 
     $em->persist($task); 
     $em->flush(); 

     return $this->redirect($this->generateUrl('task_success')); 
    } 
} 

(here부터) 이 포스트의 시작 부분에 표시된 비밀번호를 해시하는 데 사용되는 코드 (및 소금을 생성하는 코드)를 재사용 가능하게 만들고 $ form-> bindRequest() 접근 방식과 호환되게하려면 어디에 배치해야합니까? 사용자 등록 양식 및 사용자 프로필 편집 양식 등이 필요한 경우

답변

0

암호 암호화는 Doctrine의 @PrePersist 콜백 메소드에 가장 잘 배치 될 수 있습니다.

0

모델에서?

세터에서는 암호화를 추가 할 수 있습니다.

관련 문제