Symfony 4.2: конфигурация брандмауэра не загружает память провайдера пользователя - PullRequest
0 голосов
/ 01 февраля 2019

Для моей среды test я настроил провайдера на основе памяти:

config/packages/test/security.yaml

security:
  providers:
    unit_testing:
      memory:
        users:
          test1: { password: $testpwd1, roles: ['ROLE_SUPER_ADMIN'] }
          test2: { password: $testpwd2, roles: ['ROLE_SPECIAL1_ADMIN'] }
          test3: { password: $testpwd3, roles: ['ROLE_SPECIAL2_ADMIN'] }
  firewalls:
    admin:
      form_login:
        provider: unit_testing

Я пытаюсь проверить форму входа в функциональном тесте.

tests/Controller/LoginControllerTest.php

$client = static::createClient();
$crawler = $client->request(Request::METHOD_GET, '/login');
$form = $crawler->selectButton('Login')->form(['_username' => 'test1', '_password' => '$testPwd1']);
$client->submit($form);

Ошибка входа.Отладка процесса входа в систему показывает, что в то время как Kernel.php загружает дополнительную конфигурацию безопасности из test, FirewallListener выбирает конфигурацию, которая имеет provider = null.

В стандартной среде вход в систему с производственными даннымиуспешно.

Что происходит?

При необходимости я предоставлю дополнительный код.

1 Ответ

0 голосов
/ 04 февраля 2019

Я выделил проблему дальше и пришел к печальному пониманию того, что моя проблема была на самом деле , а не провайдером пользователя.

У настроенного пароля для провайдера памяти была старая кодировка,и, таким образом, более новый алгоритм кодирования выдает хэш-сумму, которая не совпадает.Одной из причин может быть переход с 3,4 на 4,2, поскольку в конфигурации было много изменений.

Ручное кодирование целевого пароля с помощью php bin/console security:encode-password <arg> решило проблему для меня.

...