Как программно войти в систему в Symfony, используя его логин и пароль? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу написать функциональный тест, подобный этому:

$user = $auth->login($username, $password);

Тогда я могу проверить поведение как:

  • вход не выполняется, если имя пользователя / пароль не совпадают с пользователем
  • вход не выполняется, если пользователь отключен
  • логин работает иначе

Я не хочу проходить HTTP-запросы для этого .

Как я могу это сделать?

Все примеры, которые я вижу, включают моделирование HTTP-запроса или вход в систему пользователя без его пароля.

Редактировать: я использую Охрана .

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Для этого можно использовать UsernamePasswordToken и менеджер аутентификации Symfony, как описано в документации, особенно в первом примере: https://symfony.com/doc/current/components/security/authentication.html

0 голосов
/ 22 мая 2019
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

// main - your main firewall key    
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$tokenStorage->setToken($token);
...