2012-06-22 6 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).

Смежные вопросы