获取当前登录用户-symfony 4

Ale*_*Br. 2 php doctrine symfony

public function agencyHome(EntityManagerInterface $em)
{
    $repository = $em->getRepository(Ships::class);
    // $ships = $repository->findByOwner($own);
    $ships = $repository->findAll();
    return $this->render('agency/index.html.twig', [
        'ships' => $ships,
    ]);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我需要将当前登录的用户传递到存储库,以便我可以找到所有我尝试过的与$ u = $ this-> getUser()-> getId()相关的“船”;没有成功:(

先感谢您 :)

jas*_*eey 5

在Symfony 4控制器中,您应该能够$this->getUser()在控制器中使用该用户,但前提是该用户已获得授权。如果没有登录用户,则应返回null

public function agencyHome(EntityManagerInterface $em)
{
    $this->denyAccessUnlessGranted('ROLE_USER');
    $user = $this->getUser();
}
Run Code Online (Sandbox Code Playgroud)

另外,您还应该能够将UserInterface类注入方法参数中,从而可以获取有关当前登录用户的信息。

public function agencyHome(EntityManagerInterface $em, UserInterface $user)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我已经在Symfony 4应用程序上对它们进行了测试,尽管我不记得是否需要在配置中执行其他任何操作,所以如果它们有任何问题,请告诉我。

引用自https://symfony.com/doc/current/security.html

  • 我无法注入“UserInterface”,但可以使用“TokenStorageInterface”来做到这一点。调用 `$this->tokenStorage->getToken()->getUser()` 检索当前登录的用户。 (2认同)