2012-10-31 3 views
3

소금을 사용하여 암호를 해독하면 로그인은 항상 "잘못된 자격 증명"을 반환합니다.소금 로그인을 사용하는 Symfony 2는 항상 잘못된 자격 증명을 반환합니다.

security: 
    encoders: 
     Aranox\UserBundle\Entity\User: 
      algorithm: sha512 

내 사용자 개체에 소금을 만들어 사용 :

내가 security.yml의 인코딩을 설정

public function load(ObjectManager $manager) 
{ 
    $encodeFactory = $this->container->get('security.encoder_factory'); 

    $user = new User(); 
    $user->setUsername('admin'); 
    $user->setEmail('[email protected]'); 

    $encoder = $encodeFactory->getEncoder($user); 
    $user->setPassword($encoder->encodePassword('admin', $user->getSalt())); 

    $user->setIsEnabled(true); 

    $manager->persist($user); 
    $manager->flush(); 

    $this->addReference('user-admin', $user); 
} 

: 일부 testdata로를 만드는기구를 사용하여

I'am

... 
/** 
* @ORM\Column(type="string", length=255) 
*/ 
private $password; 
/** 
* @ORM\Column(type="string", length=255) 
*/ 
private $salt; 

... 
function __construct() 
{ 
    $this->groups    = new ArrayCollection(); 
    $this->salt     = md5(uniqid(null, true)); 
... 

소금을 만들지 않으면 ($ this-> salt = "") 모두 정상적으로 작동합니다.

어떻게 이런 일이 발생할 수 있습니까?

답변

5

엔티티 파일의 암호 필드 길이를 확인하고 sha512에 긴 문자열이 포함되어 있기 때문에 글자 수를 줄이면 255로 늘리십시오.

+0

고맙지 만, 이미 255. – Zack

+0

수레에게 감사드립니다. – Gianluca78