The user can log in, but i need his id to show his profile. Since i'm working in symfony 4, the many possible answers i've found were obsolete.
- 
                    Perhaps you can find your answer [here](https://stackoverflow.com/questions/25682743/how-to-set-session-variables-for-all-the-controllers-in-symfony2)? – Dennishofken Apr 26 '18 at 21:23
 - 
                    1Why don't you try the answers before saying they are obsolete? `$this->getUser()` is valid wether you use symfony 2 or 4 – Liora Haydont Apr 26 '18 at 21:25
 - 
                    Possible duplicate of [Symfony2 getting logged in user's id](https://stackoverflow.com/questions/10537879/symfony2-getting-logged-in-users-id) – Philippe-B- Apr 27 '18 at 04:55
 
1 Answers
https://symfony.com/doc/current/security.html#retrieving-the-user-object
After authentication, the User object of the current user can be accessed via the getUser() shortcut (which uses the security.token_storage service). From inside a controller, this will look like:
public function index()
{
    $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
    $user = $this->getUser();
}
The user will be an object and the class of that object will depend on your user provider. But, you didn't tell us what user provider you are using, so I have no way of telling you, beyond this, how to get to the id itself.
One other way to get the user:
An alternative way to get the current user in a controller is to type-hint the controller argument with UserInterface (and default it to null if being logged-in is optional):
use Symfony\Component\Security\Core\User\UserInterface\UserInterface;
public function indexAction(UserInterface $user = null)
{
    // $user is null when not logged-in or anon.
}
This is only recommended for experienced developers who don't extend from the Symfony base controller and don't use the ControllerTrait either. Otherwise, it's recommended to keep using the getUser() shortcut.
- 62,300
 - 5
 - 72
 - 93