Fosuser bundle - 为用户设置角色

Fosuser bundle - setting role to user

我想为用户设置角色。我正在使用以下代码:

    $user = this->getDoctrine()->getRepository('BlogBundle:User')->findOneById('11');
    $em = $this->getDoctrine()->getManager();
    $t=array('ROLE_ADMIN');
    $user->setRoles($t);
    $em->persist($user);
    $em->flush();
    return new Response('okk');

当我设置 'ROLE_ADMIN' 时一切正常,但是当我设置 'ROLE_USER' 时数据库单元格为空。为什么?

提前感谢您的帮助。

在 FOS User Bundle 中,所有用户都具有 ROLE_USER 角色。 add/save 这个角色是多余的。

如果您在 FOSUserBundle 的代码库中查找它,该角色在 UserInterface class.

中别名为 ROLE_DEFAULT

您的用户 table 中的角色列应该有

a:0:{}

对于只有角色 ROLE_USER

的用户

检查 .

的编程方式

检查用户是否具有特定角色(包括 ROLE_USER)

if ($this->get('security.context')->isGranted('ROLE_USER')) {
    // the user has the ROLE_USER role
}

还有

$user->getRoles()

还有一种方法可以仔细检查用户是否真的有 ROLE_USER

php app/console fos:user:promote 

出现提示时,输入用户名,然后输入 ROLE_USER

应该说明

User "example@example.com" did already have "ROLE_USER" role.