Symfony se connecte à l'identifiant de l'utilisateur

je développe une application utilisant Symfony2 et doctrine 2. Je voudrais savoir comment obtenir l'identifiant de l'utilisateur actuellement connecté.

44
demandé sur Philippe-B- 2012-05-10 19:58:53

4 réponses

Courant versions de Symfony (Symfony 4, Symfony >=3.2)

Depuis Symfony > = 3.2 vous pouvez simplement attendre un UserInterface mise en place d'être injecté à votre contrôleur de l'action directement. Vous pouvez alors appeler getId() pour récupérer l'identifiant de l'utilisateur:

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;
    }
}

vous pouvez toujours utiliser le stockage du token de sécurité comme dans toutes les versions Symfony depuis 2.6. Par exemple, dans votre contrôleur:

$user = $this->get('security.token_storage')->getToken()->getUser();

Notez que Controller::getUser() le raccourci mentionné dans la partie suivante de cette réponse est déprécié dans Symfony 3 et a été supprimé dans Symfony 4.0

Héritage versions de Symfony

la façon la plus simple d'accéder à l'utilisateur était d'étendre le contrôleur de base, et d'utiliser le raccourci getUser() méthode (supprimé dans Symfony 4):

$user = $this->getUser();

Depuis Symfony 2.6 vous pouvez récupérer un utilisateur à partir du token de sécurité stockage:

$user = $this->get('security.token_storage')->getToken()->getUser();

Avant Symfony 2.6, le token était accessible depuis le service de contexte de sécurité à la place:

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

Notez que le service de contexte de sécurité est déprécié dans Symfony 2 et a été supprimé dans Symfony 3.0.

123
répondu Jakub Zalas 2017-12-05 18:36:59

Dans symfony2, nous pouvons obtenir ce plus simple par ce code:

$id = $this->getUser()->getId();
14
répondu 53iScott 2013-08-25 14:46:40

Vous pouvez obtenir la variable avec le code ci-dessous:

$userId = $this->get('security.context')->getToken()->getUser()->getId();
2
répondu webdeveloper 2014-12-03 22:45:48

Cela peut s'habiller de la méthode:

/**
 * Get user id
 * @return integer $userId
 */
protected function getUserId()
{
    $user = $this->get('security.context')->getToken()->getUser();
    $userId = $user->getId();

    return $userId;
}

Et l'induction $this->getUserId()

public function example()
{
    print_r($this->getUserId()); 
}
0
répondu websky 2014-12-15 16:53:01