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

问题描述:

在我的网站中,我想给一些用户更改角色的能力,请点击按钮。我用以下方式实现它:更改后访问基于禁止的用户角色

$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')") 
*/ 

我不明白的问题,因为我可以在我的控制器访问正确的价值观......在此先感谢

+1

尝试检查,如果你找到一个解决方案[这里](https://github.com/symfony/symfony/issues/12025) –

+0

它的工作原理在注销后然后重新登录? – dmnptr

+0

感谢您提供的网址@VitaliyRyaboy!我可以在那里找到解决方案,谢谢你的帮助 –

我发现,最简单的解决方案是再生会话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(); 
}