Я настраиваю аутентификацию при входе в систему для приложения Symfony 4, используя функцию MakerBundle 1.8, указанную ниже:
php bin/console make:auth
Эта функция описана в этой статье: https://symfony.com/blog/new-in-makerbundle-1-8-instant-user-login-form-commands
Я могу просмотреть форму и попытаться войти в систему, но не могу понять, как правильно добавлять пользователей с паролями и ролями.
Я пытался просто создать пользователя через базу данных, используя строкувот так для поля ролей:
{"path":"^/admin","roles":"ROLE_ADMIN"}
(я обнаружил, что JSON в "access_control" на security.yml)
Но когда я пытаюсь войти в систему как этот пользователь, я получаю сообщениеговоря "Недействительные учетные данные."Я подозреваю, что это связано с тем, что для обеспечения безопасности используется шифрование, а пользователь, которого я добавил в базу данных, представлен в виде обычного текста.
Пожалуйста, дайте мне знать, если у вас есть предложения о том, как добавить пользователя для проверки безопасности, котораядобавлено с помощью функции make: auth для MakerBundle.
ОБНОВЛЕНИЕ: Спасибо Уильяму за ответ!Вот модифицированная версия предоставленного вами приспособления, которая позволила мне войти в систему.
<?php
namespace App\DataFixtures;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManage;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use App\Entity\User;
use Doctrine\Common\Persistence\ObjectManager;
class UserFixtures extends Fixture
{
public function __construct(UserPasswordEncoderInterface $encoder)
{
$this->encoder = $encoder;
}
public function load(ObjectManager $manager)
{
$user = new User();
$user->setEmail("myemail@somedomain.io");
$roles = array("path" => "^/admin", "roles" => "ROLE_ADMIN");
$user->setRoles($roles);
$password = $this->encoder->encodePassword($user, 'pass_1234');
$user->setPassword($password);
$manager->persist($user);
$manager->flush();
}
}
?>