例如,我向控制器中当前经过身份验证的用户授予一个新角色,如下所示:
$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 版的上下文中提出的,但下面也有更新版本的答案。