たとえば、次のように、コントローラーで現在認証されているユーザーに新しいロールを付与するとします。
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
次のページの読み込みで、認証されたユーザーを再度取得すると、次のようになります。
$loggedInUser = $this->get('security.context')->getToken()->getUser();
ロールは付与されません。これは、ユーザーがセッションに保存されており、更新する必要があるためだと推測しています。
どうすればいいですか?
それが違いを生む場合、私は FOSUserBundle を使用しています。
編集: この質問は、もともと Symfony バージョン 2.3 のコンテキストで尋ねられましたが、以下の最近のバージョンに対する回答もあります。