Symfony 2.3: Comment puis-je actualiser l'utilisateur authentifié à partir de la base de données?

Dire par exemple je l'octroi d'un nouveau rôle pour l'utilisateur actuellement authentifié dans un contrôleur, comme suit:

$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');

$em->persist($loggedInUser);
$em->flush();

Sur le chargement de la page suivante, quand je prends l'utilisateur authentifié de nouveau:

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

Ils ne disposent pas du rôle. Je suppose que c'est parce que l'utilisateur est stocké dans la session et doit être actualisé.

Comment puis-je faire cela?

J'utilise FOSUserBundle si cela fait une différence.

Est la base de données mise à jour?
Oui la base de données est mise à jour. Donc, si je me déconnecte, et à nouveau, puis le nouveau rôle est pris en compte.
J'ai été vérifier pour un nouveau rôle dans un template twig à l'aide de if is_granted('ROLE_XYZ'). J'ai changé de ce if app.user.hasRole('ROLE_XYZ') et maintenant, il est de travail. Étrange...
c'est parce que hasRole vérifie les rôles exacts. Il ignore le rôle de la hiérarchie.. par exemple: est ROLE_SUPER_ADMIN a ROLE_USER, ROLE_ADMIN.. Si vous cochez hasRole('ROLE_ADMIN')--- faux, hasGranted('ROLE_ADMIN')--- vrai
Merci Alex, toutefois, l'appel à is_granted('ROLE_XYZ') retourne VRAI que dès que j'ai déconnecté et de revenir à nouveau.

OriginalL'auteur Nada_Surf | 2013-10-31