Symfony 2 — не аутентифицирующийся пользователь, использующий bcrypt

Я добавляю пользователя в базу данных.

Я кодирую их пароль, используя шифрование bcrypt:

$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());
$postData->setPassword($password);

Все это сохраняется в базе данных просто отлично.

В моем User Entity мой метод getSalt () возвращает null:

public function getSalt(){
return null;
}

Теперь, когда я пытаюсь аутентифицироваться, логи Symfony сообщают мне, что я ввел неверные учетные данные.

Тем не мение…

Если я использую этот сайт для шифрования моего пароля с помощью bcrypt:

http://bcrypthashgenerator.apphb.com/

Затем введите результат в базу данных вручную и попытайтесь подтвердить подлинность с помощью пароля пользователя, который я обновил, используя результаты по приведенной выше ссылке,
Работает нормально.

Таким образом, есть кое-что, что я не установил: когда я шифрую пароль, Symfony не может аутентифицироваться против него.

Я попытался установить соль на getSalt (), установив его в пустую строку.

РЕДАКТИРОВАТЬ
Я использую php 5.5.9

Я также пытался использовать класс BCryptPasswordEncoder ($ cost),
установка стоимости на __construct такая же, как и в моем security.yml
и это все еще не подтверждает подлинность.

РЕДАКТИРОВАТЬ
Я также попытался установить этот класс через композитор, как предложено Вот.

РЕДАКТИРОВАТЬ

Если я использую метод php:

password_hash('testertester',PASSWORD_BCRYPT,array('cost'=>13));

Это подтверждает подлинность отлично.

Так что в Symfony есть чем заняться. Я буду продолжать копать.

Все равно не повезло: — /

Я пока безрезультатно слежу за интернетом.

Любая помощь будет принята с благодарностью.

Объявление

1

Решение

Я передавал в существующий объект сущности не представленный объект данных !!

$postData = $form->getdata();

$factory = $this->get('security.encoder_factory');

$encoder = $factory->getEncoder($user);

$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());

$postData->setPassword($password);

Обратите внимание на эту строку здесь:

$ user-> getPassword () должен быть $ postData-> getPassword ()

$password = $encoder->encodePassword($postData->getPassword(),$user->getSalt());

Вы живете и учитесь!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]