用户可以登录,但我需要他的ID来显示他的个人资料。由于我在symfony 4工作,我发现的许多可能的答案已经过时了。
答案 0 :(得分:3)
https://symfony.com/doc/current/security.html#retrieving-the-user-object
验证后,可以通过getUser()快捷方式(使用security.token_storage服务)访问当前用户的User对象。从控制器内部看,它将如下所示:
public function index()
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$user = $this->getUser();
}
用户将是一个对象,该对象的类将取决于您的用户提供者。但是,您没有告诉我们您使用的是哪个用户提供商,因此我无法告诉您,除此之外,如何获取ID本身。
另一种获取用户的方式:
在控制器中获取当前用户的另一种方法是使用UserInterface键入提示控制器参数(如果登录是可选的,则默认为null):
use Symfony\Component\Security\Core\User\UserInterface\UserInterface;
public function indexAction(UserInterface $user = null)
{
// $user is null when not logged-in or anon.
}
仅适用于未从Symfony基本控制器扩展且不使用ControllerTrait的有经验的开发人员。否则,建议继续使用getUser()快捷方式。