2012-10-31 45 views
3

如果我使用salt來解密我的密碼,登錄總是返回「Bad credentials」。使用salt登錄的Symfony 2總是返回Bad憑證

我'用夾具製造一些TESTDATA:

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

我成立security.yml編碼:使用

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

創造了我的用戶實體鹽:

... 
/** 
* @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

請檢查您的密碼字段的長度在實體文件中,並增加到255,如果因爲sha512包含長字符串。

+0

謝謝,但它已經是255. – Zack

+0

謝謝蘇雷什,你救了我的一天... – Gianluca78