Для пользователя нет поставщика, symfony 3.4.37 и 4.4.3 - PullRequest
1 голос
/ 22 января 2020

После обновления до Symfony 3.4.37 у меня возникла эта проблема

Нет поставщика пользователя для пользователя "Mybundle \ Myuser".

С версией 3.4.36 и предыдущий, он работал нормально.

security.yml

security:
  providers:
    myprovider:
        id: myuser.provider

services.yaml

myuser.provider:
    class: Mybundle\MyUserProvider
    public: true
    arguments: 
        - '@arg1'
    tags:
        - { name: monolog.logger, channel: app.oneid.provider }

Есть идеи, как решить эту проблему?

Редактировать: класс поддержки моего провайдера:

public function supportsClass($class)
{
    return MyUserProvider::class === $class;
}

Ответы [ 2 ]

1 голос
/ 22 января 2020

Метод, поддерживаемый UserProvider, должен тестировать класс User, а не UserProvider. Итак:

public function supportsClass($class)
{
    return MyUser::class === $class;
}

Что интересно (по крайней мере мне), так это то, что более ранние версии 3.4 и 4.4 работали. Предыдущий код либо не вызывал метод support, либо не проверял возвращаемое значение. Довольно странно, что решение такого рода проблемы заняло так много времени.

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

0 голосов
/ 23 января 2020

У меня такая же проблема на Symfony 4.4.3. Проблема в методе supportsClass моего провайдера пользовательских пользовательских данных. Небольшое объяснение о том, как решить эту проблему:

До (ошибка с описанным исключением):

public function supportsClass($class)
{
    return $class === UserInterface::class;
}

После (работает нормально, используйте последний класс):

public function supportsClass($class)
{
    return $class === MyCustomModel::class;
}

Я проверял компонент безопасности и думаю, что проблема возникает в следующем коммите: https://github.com/symfony/security/commit/0cfaf60c0666e8967590d0dada80caa7f9b61b02#diff -0cd860ec03e139a658ed3c258b615f21

С уважением, я думаю, что теперь он имеет ожидаемое поведение ; но ломает плохо реализованных пользовательских провайдеров.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...