Symfony 4 Bundle:AuthenticationUtils,但不存在此类服务



我正在尝试制作一个Bundle(Symfony 4(来管理我们所有项目的用户,但我遇到了一个问题。

无法自动连接"App\Aroban\Bundle\UtilisaturBundle\Controller\SecurityController::login(("的参数$authenticationUtils:它引用类"Symfony\Component\Security\Http\Authentication\Authentication Utils",但不存在此类服务。

我不明白为什么没有注入服务。。。

在项目的composer.json中,有"symfony/security bundle":"4.3.*">

捆绑包中:

SecurityController.php

<?php
namespace AppArobanBundleUtilisateurBundleController;
use AppArobanBundleUtilisateurBundleEntityUtilisateur;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
use SymfonyComponentSecurityCoreEncoderUserPasswordEncoderInterface;
use SymfonyComponentSecurityCsrfTokenGeneratorTokenGeneratorInterface;
use SymfonyComponentSecurityHttpAuthenticationAuthenticationUtils;
use Swift_Mailer;
class SecurityController extends AbstractController
{
public function login(AuthenticationUtils $authenticationUtils): Response
{
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('@Utilisateur/security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]);
}
.......
}

配置.php

<?php
namespace AppArobanBundleUtilisateurBundleDependencyInjection;
use SymfonyComponentConfigDefinitionBuilderTreeBuilder;
use SymfonyComponentConfigDefinitionConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder('utilisateur');
$rootNode = $treeBuilder->getRootNode();
return $treeBuilder;
}
}

UtilisateurExtension.php

<?php
namespace AppArobanBundleUtilisateurBundleDependencyInjection;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentDependencyInjectionExtensionExtension;
use SymfonyComponentConfigFileLocator;
use SymfonyComponentDependencyInjectionLoader;
class UtilisateurExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container): void
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new LoaderYamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yaml');
}
}

services.yaml(捆绑(

services:
_defaults:
autowire: true      # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
public: false       # Allows optimizing the container by removing unused services; this also means
AppArobanBundleUtilisateurBundle:
resource: '../../*'
exclude: '../../{Entity,Migrations,Tests,Kernel.php}'
AppArobanBundleUtilisateurBundleController:
resource: '../../Controller/*'
tags: ['controller.service_arguments']

当我执行命令时

php-bin/console调试:容器|grep安全

我没有看到服务。。。

Symfony\Component\Security\Csrf\CsrfTokenManagerInterface"Security.Csrf.token_manager"的别名
Symfony \Component \Security\Csrf\TokenGenerator\TokenGeneratorInterface"Security.Csrf.token _generator"的别名
doctrine.orgm.security.user.provider Symfony \ Bridge \ doctrine \ security \ user\EntityUserProvider
maker.security_config_updater Symfony \Bundle\MakerBundle\security\SecurityConfigUpdater
security.csrf.token_generatorSymfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator
Security.Csrf.token_manager Symfony/Component\Security\Csrf\CsrfTokenManager
ecurity.Csrf.token_storage Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage
twig.extension.Security_CsrfSymfony\Bridge\Twig\Extension\CsrfExtension
Twig.runtime.security_csrf Symfony\Pridge\Twig \Extension\CsrfRuntime
//若要搜索特定服务,请使用搜索词重新运行此命令。(例如调试:容器
//log(

感谢您的帮助!

之后是否尝试composer install

这将安装您在composer.json 中指定的依赖项

您可能需要删除您的composer.lock,以便它安装您添加的依赖项(请参阅文档(。最简单的方法可能是使用composer-required-symfony/securitybundle:4.3代替

相关内容

最新更新