Я настраиваю аутентификацию при входе в приложение 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("[email protected]");
$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();
}
}
?>