Symfony aan de ingelogde gebruiker-id

Ik ben het ontwikkelen van een toepassing die gebruikmaakt van Symfony2 en doctrine 2. Ik zou graag willen weten hoe kan ik de momenteel ingelogde gebruiker-Id.

  • In symfony2.1 controllers, kunt u de gebruiker door te bellen naar $this->getUser(). Ik denk dat het is nieuw in deze versie van symfony.
InformationsquelleAutor Haritz | 2012-05-10

 

4 Replies
  1. 131

    Huidige Symfony versies (Symfonie 4, Symfony >=3.2)

    Sinds Symfony >=3.2 u kunt verwachten dat een UserInterface uitvoering te worden geïnjecteerd om de controller actie direct. U kunt dan bellen getId() te halen gebruiker-id:

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

    U kunt nog steeds gebruik maken van de security token opslag als in alle Symfony versies sinds 2.6. Bijvoorbeeld, in de controller:

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

    Er rekening mee dat de Controller::getUser() snelkoppeling vermeld in het volgende deel van dit antwoord is niet meer aangemoedigd.

    Legacy Symfony versies

    De eenvoudigste manier om toegang te krijgen tot de gebruiker gebruikt worden voor het verlengen van de basiscontroller, en gebruik de snelkoppeling getUser() methode:

    $user = $this->getUser();

    Sinds Symfony 2.6 u kunt ophalen van een gebruiker van de security token opslag:

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

    Voor Symfony 2.6, de token is bereikbaar vanaf de security context service plaats:

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

    Er rekening mee dat de security context service is afgeschaft in Symfony 2 en werd verwijderd in Symfony 3.0.

    • Mooi antwoord. voor andere velden van het object user als e-mail, voornaam of geslacht. Gebruik als deze. Om geslacht, echo ‘Gender’: ‘. $user->getGender();
    • Niet meer in gebruik sinds versie 2.6, worden verwijderd 3.0. !
    • getUser() wordt nog steeds gebruikt in Symfony 4+ per de documenten: symfony.com/doc/current/…
  2. 3

    U kunt de variabele met de onderstaande code:

    $userId = $this->get('security.context')->getToken()->getUser()->getId();
    • een slechte gewoonte, de naam van de variabele moet worden $userId
  3. 0

    Deze kunnen worden gekleed in de methode:

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

    En inductie $this->getUserId()

    public function example()
    {
        print_r($this->getUserId()); 
    }

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *