2012-06-22 68 views
1

security.yml:不能與Symfony2的登錄

providers: 
    main: 
     entity: { class: Tg\UserBundle\Entity\User, property: username } 
encoders: 
    Tg\UserBundle\Entity\User: sha512 

在註冊過程中我的經理,我設置的密碼:

$encoder = $this->encoder->getEncoder($user); 
    $raw = $user->getPassword(); 
    $salt = $user->getSalt(); 
    $encoded = $encoder->encodePassword($raw, $salt); 

    if (!$encoder->isPasswordValid($encoded, $raw, $salt)) { 
     throw new \Exception('Password incorrectly encoded during user registration', 428); 
    } else { 
     $user->setPassword($encoded); 
    } 

在我的用戶實體我有結構的基本鹽:

$this->salt = md5(uniqid(null, true)); 

我收到默認登錄模板錯誤:

提示的密碼無效。

Wtf?

回答

1

這不完全是一個答案(我不明白爲什麼你的例子不工作)。但我使用的編碼SHA512 Base64和這個設置是工作的罰款對我來說:

security: 
    encoders: 
     Acme\HelloBundle\Entity\User: 
      algorithm: sha512 
      encode_as_base64: true 
      iterations: 10 

鹽初始化在User類:

$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36); 

希望這有助於。

+1

這並沒有解決它,但使用你的鹽讓我改變了我的鹽柱的長度,唉,有錯誤,密碼的長度太小。感謝您帶領我解決問題! – Tjorriemorrie

0

我只是碰到了這個錯誤。您需要確保您的密碼字段可以支持sha512散列大小。我認爲這些教程將密碼字段默認爲40的大小。您需要將其擴展爲更大的大小(125)。