Symfony вход в систему id пользователя
Я разрабатываю приложение, используя Symfony2 и доктрину 2. Я хотел бы знать, как я могу получить идентификатор текущего пользователя.
4 ответов
текущие версии Symfony (Symfony 4, Symfony >=3.2)
С Symfony >=3.2 вы можете просто ожидать 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();
обратите внимание, что the Controller::getUser()
ярлык, упомянутый в следующей части этого ответа, устарел в Symfony 3 и был удален в Symfony 4.0
устаревшие версии Symfony
самый простой способ получить доступ к пользователю используется, чтобы расширить базовый контроллер, и использовать ярлык getUser()
метод (удален в Symfony 4):
$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.
вы можете получить переменную с код ниже:
$userId = $this->get('security.context')->getToken()->getUser()->getId();
Это может одеться в метод:
/**
* 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());
}