更改一个用户的角色不使用 Symfony2

Change role of one user no working with Symfony2

抱歉,这个问题已经被问过很多次了,但我没有在网上找到任何解决方案。 所以,我刚刚安装了 FOSUserBundle,并使用控制台在我的应用程序上创建了 2 个用户。问题是他们没有任何作用。 因此,在控制器上,我得到了用户实体并设置了他的角色,但是当我尝试访问限制为管理员访问的页面时,它说访问被拒绝。此外,角色在数据库上没有改变。 我在控制器中的代码:

$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 !');
}

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

如果您首先想让他们远离控制器,那么在您的控制器中设置用户角色是一种非常糟糕的做法。希望您仅将这行代码用于测试。

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

您需要的是:

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

用您的用户名替换 testuser。

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