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.


в symfony2 мы можем получить это проще с помощью этого кода:

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

вы можете получить переменную с код ниже:

$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()); 
}