Symfony 安全核心接口不加载

Symfony security core Interface doesnt load

今晚在 symfony 上遇到一个简单但愚蠢的问题... 我需要使用安全组件的 UserInterface class 来检索有关当前用户的信息。但是 symfony 告诉我这个 class 不存在。我检查了“安全”是否安装正确,路径是否正确...

我的代码:

<?php

namespace App\Controller;

use App\Entity\Profile;
use App\Entity\Candidature;
use App\Form\CandidatureType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class CandidateController extends AbstractController
{
    /**
     * @Route("/candidate", name="candidate")
     */
    public function new(Request $request, UserInterface $user): Response
    {
        // NEED TO BE CONNECTED !!
        if ($user->getUsername()) {
            // SOME CODE ...........

        } else {
            return $this->redirectToRoute('security_login');
        }
    }
}

错误我得到(引用)

Cannot autowire argument $user of "App\Controller\CandidateController::new()": it references interface "Symfony\Component\Security\Core\User\UserInterface" but no such service exists. Did you create a class that implements this interface?

自动装配机制只适用于服务,用户界面不是服务,它只是处理 Symfony 核心安全的合同。 如果你想获得当前用户,你应该注入 Symfony\Component\Security\Core\Security class see documentation

在config/services.yml

services:
    App\Controller\CandidateController:
       arguments:
        $user: '@Symfony\Component\Security\Core\User'

-为 $user 添加真实 class:

-您还可以将此检查移动到服务 class 本身,并将此 $user 注入到服务 class.

编辑:

如果您想在未来和现在之间切换不同的用户组件,请注意此解决方案。