更改一个用户无法使用Symfony2的角色

时间:2015-06-19 12:38:35

标签: symfony fosuserbundle roles

很抱歉,如果多次询问此问题,但我没有在网上找到任何解决方案。 所以,我刚刚安装了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 !');
}

有人有想法吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果您想让控制器远离控制器,那么在控制器中设置用户角色是一种非常糟糕的做法。我希望您只使用这行代码进行测试。

FOSUserBundle提供了许多命令行实用程序来帮助管理应用程序的用户。

你需要的是:

$ php app/console fos:user:promote testuser ROLE_ADMIN

将testuser替换为您的用户名。

您是否也在防火墙中定义了自己的角色?