Я разрабатываю приложение, используя Symfony2 и доктрину 2. Я хотел бы знать, как я могу получить текущий идентификатор пользователя, вошедшего в систему.
Symfony входит в систему с идентификатором пользователя
Ответы (4)
Текущие версии Symfony (Symfony 4, Symfony >=3.2)
Поскольку Symfony >=3.2< /strong> вы можете просто ожидать, что реализация UserInterface
будет внедрена непосредственно в действие вашего контроллера. Затем вы можете вызвать getId()
для получения идентификатора пользователя:
class DefaultController extends Controller
{
// when the user is mandatory (e.g. behind a firewall)
public function fooAction(UserInterface $user)
{
$userId = $user->getId();
}
// when the user is optional (e.g. can be anonymous)
public function barAction(UserInterface $user = null)
{
$userId = null !== $user ? $user->getId() : null;
}
}
Вы по-прежнему можете использовать хранилище токенов безопасности, как и во всех версиях Symfony, начиная с 2.6. Например, в вашем контроллере:
$user = $this->get('security.token_storage')->getToken()->getUser();
Обратите внимание, что сокращение Controller::getUser()
, упомянутое в следующей части этого ответа, больше не рекомендуется.
Устаревшие версии Symfony
Раньше самым простым способом доступа к пользователю было расширение базового контроллера и использование метода ярлыка getUser()
:
$user = $this->getUser();
Начиная с Symfony 2.6, вы можете получить пользователя из хранилища токенов безопасности:
$user = $this->get('security.token_storage')->getToken()->getUser();
До Symfony 2.6 вместо этого токен был доступен из службы контекста безопасности:
$user = $this->get('security.context')->getToken()->getUser();
Обратите внимание, что служба контекста безопасности устарела в Symfony 2 и была удалена в Symfony 3.0.
В symfony2 мы можем сделать это проще с помощью этого кода:
$id = $this->getUser()->getId();
Вы можете получить переменную с помощью кода ниже:
$userId = $this->get('security.context')->getToken()->getUser()->getId();
$userId
- person GusDeCooL; 16.08.2014
Это можно одеться методом:
/**
* Get user id
* @return integer $userId
*/
protected function getUserId()
{
$user = $this->get('security.context')->getToken()->getUser();
$userId = $user->getId();
return $userId;
}
И индукция $this->getUserId()
public function example()
{
print_r($this->getUserId());
}