参数 #1 ($userProvider) 必须是类型 ... UserProviderInterface
Argument #1 ($userProvider) must be of type ... UserProviderInterface
我已经按照说明安装了 Sonata User Bundle。加载用户固定装置和清除缓存的过程工作正常,但是一旦我尝试在浏览器中访问需要身份验证的区域,我得到这个异常:
Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider::__construct():
Argument #1 ($userProvider) must be of type
Symfony\Component\Security\Core\User\UserProviderInterface,
Sonata\UserBundle\Entity\UserManager given, called in
/var/www/var/cache/dev/ContainerKw1JrEb/srcApp_KernelDevDebugContainer.php
on line 7756
异常追踪到:
vendor/symfony/security-core/Authentication/Provider/DaoAuthenticationProvider.php(第 35 行)
...这是一个看起来像这样的构造函数:
class DaoAuthenticationProvider extends UserAuthenticationProvider
{
private $encoderFactory;
private $userProvider;
public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, string $providerKey, EncoderFactoryInterface $encoderFactory, bool $hideUserNotFoundExceptions = true)
{
parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions);
$this->encoderFactory = $encoderFactory;
$this->userProvider = $userProvider;
...
我的 fos_user.yaml
文件如下所示:
fos_user:
db_driver: orm
firewall_name: main
user_class: App\Entity\User
group:
group_class: FOS\UserBundle\Entity\Group
group_manager: sonata.user.orm.group_manager
from_email:
address: "noreply@patrickmaynard.com"
sender_name: "No Reply"
service:
user_manager: sonata.user.orm.user_manager
有谁知道我需要做什么才能让事情正常进行?
(注意:我检查了重复项,但虽然有几个问题看起来很相似,但错误消息与我看到的略有不同。请仔细检查措辞,而不是立即询问这个关闭问题,因为人们可能会 google 我的例外的具体措辞。)
您使用的是哪个版本的 symfony? FosUserBundle 与 symfony5 不兼容,Sonata User bundle 仅与 symfony 4.4 兼容,后者几乎已停产。我觉得你应该走另一条路。设置自己的用户管理器并不像您想象的那么困难。查看 https://github.com/FriendsOfSymfony/FOSUserBundle#maintenance-status
上的建议
本教程还可以帮助您朝着正确的方向前进:
https://symfonycasts.com/screencast/symfony5-security
我已经按照说明安装了 Sonata User Bundle。加载用户固定装置和清除缓存的过程工作正常,但是一旦我尝试在浏览器中访问需要身份验证的区域,我得到这个异常:
Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider::__construct(): Argument #1 ($userProvider) must be of type Symfony\Component\Security\Core\User\UserProviderInterface, Sonata\UserBundle\Entity\UserManager given, called in /var/www/var/cache/dev/ContainerKw1JrEb/srcApp_KernelDevDebugContainer.php on line 7756
异常追踪到:
vendor/symfony/security-core/Authentication/Provider/DaoAuthenticationProvider.php(第 35 行)
...这是一个看起来像这样的构造函数:
class DaoAuthenticationProvider extends UserAuthenticationProvider
{
private $encoderFactory;
private $userProvider;
public function __construct(UserProviderInterface $userProvider, UserCheckerInterface $userChecker, string $providerKey, EncoderFactoryInterface $encoderFactory, bool $hideUserNotFoundExceptions = true)
{
parent::__construct($userChecker, $providerKey, $hideUserNotFoundExceptions);
$this->encoderFactory = $encoderFactory;
$this->userProvider = $userProvider;
...
我的 fos_user.yaml
文件如下所示:
fos_user:
db_driver: orm
firewall_name: main
user_class: App\Entity\User
group:
group_class: FOS\UserBundle\Entity\Group
group_manager: sonata.user.orm.group_manager
from_email:
address: "noreply@patrickmaynard.com"
sender_name: "No Reply"
service:
user_manager: sonata.user.orm.user_manager
有谁知道我需要做什么才能让事情正常进行?
(注意:我检查了重复项,但虽然有几个问题看起来很相似,但错误消息与我看到的略有不同。请仔细检查措辞,而不是立即询问这个关闭问题,因为人们可能会 google 我的例外的具体措辞。)
您使用的是哪个版本的 symfony? FosUserBundle 与 symfony5 不兼容,Sonata User bundle 仅与 symfony 4.4 兼容,后者几乎已停产。我觉得你应该走另一条路。设置自己的用户管理器并不像您想象的那么困难。查看 https://github.com/FriendsOfSymfony/FOSUserBundle#maintenance-status
上的建议本教程还可以帮助您朝着正确的方向前进: https://symfonycasts.com/screencast/symfony5-security