更改后访问禁止的基于用户角色

Access forbidden based user role after change it

在我的网站中,我想让一些用户能够通过单击按钮来更改他们的角色。我通过以下方式实现它:

$post = Request::createFromGlobals();
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){
        $em = $this->getDoctrine()->getManager();
        $user->setRoles(array('ROLE_MEDIA'));
        $em->flush();
 }

它工作正常,检查数据库后我可以在主控制器中毫无问题地恢复标志。问题如下:单击按钮并向具有 ROLE_MEDIA 的用户访问受限页面后,我收到 403 错误。似乎 Symfony 没有检测到新的用户角色。我正在使用以下代码限制某些页面:

/**
*
* @Security("has_role('ROLE_MEDIA')")
*/

我不明白这个问题,因为我可以在我的控制器中访问正确的值...提前致谢

我发现最简单的解决方案是通过重新生成会话 ID 来刷新会话:

$post = Request::createFromGlobals();
if($post->request->has('change') && $user->hasRole('ROLE_MEDIA') == False){
        $em = $this->getDoctrine()->getManager();
        $user->setRoles(array('ROLE_MEDIA'));
        $em->flush();
        $this->get('session')->migrate();
 }