很抱歉,如果多次询问此问题,但我没有在网上找到任何解决方案。 所以,我刚刚安装了FOSUserBundle,并且我已经在我的应用程序上使用控制台创建了2个用户。问题是他们没有任何作用。 所以在控制器上,我得到用户实体并设置他的角色但是当我尝试访问限制为admin的页面时,它表示访问被拒绝。而且,数据库的角色没有变化。 我在控制器中的代码:
$user = $this->container->get('security.context')->getToken()->getUser();
$user->setRoles('ROLE_ADMIN');
if (!$this->get('security.context')->isGranted('ROLE_ADMIN')){
throw new AccessDniedException('Access Denied !');
}
有人有想法吗? 提前谢谢!
答案 0 :(得分:1)
如果您想让控制器远离控制器,那么在控制器中设置用户角色是一种非常糟糕的做法。我希望您只使用这行代码进行测试。
FOSUserBundle提供了许多命令行实用程序来帮助管理应用程序的用户。
你需要的是:
$ php app/console fos:user:promote testuser ROLE_ADMIN
将testuser替换为您的用户名。
您是否也在防火墙中定义了自己的角色?