Php Symfony 2中的角色分配

Php Symfony 2中的角色分配,php,security,symfony,roles,Php,Security,Symfony,Roles,我尝试将角色分配给控制器中的用户。例如,在数据库中,我得到了这个结果a:1:{I:0;s:11:“ROLE\u DRIVER”},但当我在应用程序中的某个地方尝试这样做时 if ($securityContext->isGranted('ROLE_DRIVER')) { 我总是说谎。在分析器中,我看到当前用户具有角色\u用户,而不是\u驱动程序。 我的问题在哪里?以下是我的角色分配: $user->setRoles(array(1 => 'ROLE_DRIVER')); 用

我尝试将角色分配给控制器中的用户。例如,在数据库中,我得到了这个结果
a:1:{I:0;s:11:“ROLE\u DRIVER”}
,但当我在应用程序中的某个地方尝试这样做时

if ($securityContext->isGranted('ROLE_DRIVER')) {
我总是说谎。在分析器中,我看到当前用户具有
角色\u用户
,而不是
\u驱动程序
。 我的问题在哪里?以下是我的角色分配:

$user->setRoles(array(1 => 'ROLE_DRIVER'));
用户配置:

# FOSUserBundle configuration
fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: Vputi\UserBundle\Entity\User
    registration:
            form:
                type: vputi_user_registration
    profile:
            form:
                type: vputi_user_profile
    change_password:
             form:
                type: vputi_user_change_password
                name: vputi_user_change_password
当我在树枝上时,我会这样做:

{% if user.roles[0] == 'ROLE_DRIVER' %}

所有这些都可以正常工作,但在控制器中…

我建议您这样做,以分配
角色\u驱动程序

$user->addRole('ROLE_DRIVER');
或者,您可以改变为以下各项赋予价值的方式:

$user->setRoles(array("ROLE_DRIVER"));
//update user 
更新:

$user->addRole('ROLE_DRIVER');
$user->addRole('ROLE_OLD_DRIVER');
这与在一行中设置这两个角色相同:

$user->setRoles(array("ROLE_DRIVER", "ROLE_OLD_DRIVER"));
细枝检查:

{% if app.user.hasRole('ROLE_FOO') %}
    ...
{% endif %}

你用的是FOSUserBundle吗?你能提供你的用户对象的一些代码,一些关于你的安全性的配置吗?是的,我使用FOSUserBundle。我将我的配置添加到问题正文。您是否已登录用户对象,注销然后重新登录?是。没有发生任何事情。如果我们也能看到roleshello的实现,也许会更好,我不知道怎么做,但是当我今天尝试你的代码时,一切都正常!谢谢)您如何分配多个角色?多个角色?不,我只分配一个角色。