簡體   English   中英

Symfony 2.5 / FOSUserBundle在EventListener中獲取用戶ID

[英]Symfony 2.5 / FOSUserBundle Get user id in an EventListener

我正在嘗試在Symfony 2.4中的事件偵聽器中獲取用戶ID,但據我所知,EventListener不是由控制器調用的,所以我無法使用

$這 - >的getUser();

獲得ID的最佳方法是什么?

我考慮過在調用該事件的services.yml中提供它。

感謝您提供的任何幫助或任何文檔。

問候,

在控制器中從symfony 2.1開始 ,您應該可以輕松使用

 $user = $this->getUser();
 $userId = $user->getId();

或者,您可以從安全上下文中獲取當前登錄的用戶對象

$user = $this->container->get('security.context')->getToken()->getUser();
$userId = $user->getId();

或使用FOSUserBundle服務 (顯然,它是內置方法getUser()的替代方法,如鏈接頁面中的注釋所示)

$userManager = $this->container->get('fos_user.user_manager');
$user = $userManager->findUserByUsername($this->container->get('security.context')->getToken()->getUser());
$userId = $user->getId();

更新

如果您處於事件偵聽器中 ,則需要通過“依賴項注入”將容器注入偵聽器類中以進行訪問。 看看這個答案: https : //stackoverflow.com/a/17022330/3625883


第二次更新

前面的鏈接完全符合您的要求,但我只想注意一件事:通常,注入整個服務容器不是一個好習慣,您應該僅注入security.context。 有關更多信息: https : //stackoverflow.com/a/15922525/3625883

$user_id=$this->getUser()->getId();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM