Как добавить администратора с шифрованием пароля bcrypt в symfony?

Я столкнулся со «странной» проблемой при разработке сайта с использованием Symfony 2.6.
Я уже настроил все средства безопасности, включая шифрование пароля при регистрации (с помощью bcrypt) для пользователей и администраторов. Теперь я хочу добавить администратора и пользователя, чтобы попытаться, если мой механизм входа работает хорошо, но, очевидно, я не могу зарегистрировать нового пользователя / администратора на своем сайте из-за механизма безопасности (то есть я не могу получить доступ к странице addUser, потому что нет админ зарегистрирован). Я попытался создать администратора непосредственно из консоли phpMyAdmin, но в тот момент, когда я вводил пароль администратора, он сохранялся в виде открытого текста (в отличие от фазы регистрации в моем движке, в которой хранятся зашифрованные пароли), поэтому вход в систему не удался.

Итак, как я могу решить эту проблему?

Надеюсь, что вы все поняли это, в противном случае не стесняйтесь спрашивать!

Заранее спасибо,
Рапс

2

Решение

Итак, я нашел это здорово и просто руководство это объясняет, как «автоматически генерировать» пользователя с помощью фикстур Doctrine, в котором есть метод load, который просто делает следующее:

public function load(ObjectManager $manager)
{
$user = new User();
$user->setUsername("someuser");
$user->setSalt(md5(uniqid()));
$encoder = $this->container->get('security.encoder_factory')->getEncoder($user);
$user->setPassword($encoder->encodePassword('blue', $user->getSalt()));
$user->setEmail("[email protected]");

$manager->persist($user);

$manager->flush();
}

Также спасибо @acontell за его ответ. Возможно, мое решение поможет вам в будущем. 🙂

4

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

Используйте любую веб-страницу, которая генерирует пароли bcrypt, такие как эта один. Сгенерируйте пароль и сохраните его в зашифрованном виде в вашей базе данных. Войдите в систему, используя созданного вами пользователя и пароль (очевидно, незашифрованную версию).

Он должен работать.

2

Symfony 3 поставляет очень полезную команду для этого: security:encode-password

Команда security: encode-password кодирует пароли в соответствии с
ваша конфигурация безопасности. Эта команда в основном используется для генерации
пароли для типа провайдера пользователя in_memory и для изменения
пароли в базе данных при разработке приложения.

php ./bin/console security:encode-password --no-interaction _password_ "App\Entity\User"

Дать

 ------------------ ----------------------------------------------------------------------
Key                Value
------------------ ----------------------------------------------------------------------
Encoder used       Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder
Encoded password   94H61KiSMDm60HL63z+s8AxLUTqwVv8aoKshC3X1q5A=
Generated salt     tyPR/b4ussonYznhJ/bgtlTKSerBznRcNEPgSNmW
------------------ ----------------------------------------------------------------------
2
По вопросам рекламы [email protected]