Symfony 2中的角色分配

时间:2014-10-28 13:11:19

标签: php security symfony roles

我尝试在控制器中为用户分配角色。例如,在数据库中,我得到了这个结果a:1:{i:0;s:11:"ROLE_DRIVER";},但是在我的应用程序的某个地方,我尝试这样做

if ($securityContext->isGranted('ROLE_DRIVER')) {

我总是假的。在分析器中,我看到当前用户有ROLE_USER而不是_DRIVER。 我的问题在哪里?这是我的角色分配:

$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' %}

一切正常,但在控制器......

1 个答案:

答案 0 :(得分:1)

我建议您分配ROLE_DRIVER

$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"));

Twig检查:

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