Я замечаю пару проблем:
Вы не используете кодировщик, предоставленный Symfony, в основном конфигурация вашего кодера в security.yml игнорируется, вы можете изменить код (HelloController, начиная со строки 70), чтобы кодировать ваш пароль:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),
$user->getSalt());
$user->setPassword($password);
Я использовал эту заглушку из документации Symfony Security и работал на меня.
Я не думаю, что пользователь сохраняется в какой-либо части предоставленного кода, возможно, добавив это после $user->setPassword($password);
?
$em = $this->getDoctrine()->getEntityManager();
$em->persist($entity);
$em->flush();
Убедитесь, что пользователь вставлен в вашу базу данных и что пароль и соль присутствуют, аутентификация не будет выполнена, если соль не будет сохранена.
Кроме того, я не использовал sha512, но я думаю, что вы не создаете соль правильно, попробуйте вместо этого:
$user->setSalt(hash('sha512', $user->getPassword()));