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.
中
编辑:
如果您想在未来和现在之间切换不同的用户组件,请注意此解决方案。
今晚在 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.
中编辑:
如果您想在未来和现在之间切换不同的用户组件,请注意此解决方案。