2014-10-28 3 views
0

내 컨트롤러에서 사용자에게 역할을 할당하려고합니다. 데이터베이스의 예를 들어 나는이 결과 a:1:{i:0;s:11:"ROLE_DRIVER";} 받고 있지만, 내 응용 프로그램에서 어딘가에는 내가 항상 false를 얻을이Symfony 2의 역할 할당

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

을하려고 할 때. 프로파일 러에서 현재 사용자는 _DRIVER 대신 ROLE_USER입니다. 내 문제는 어디에 있습니까? 여기 내 역할 할당입니다 :

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

모든 컨트롤러에 ...

+0

FOSUserBundle을 사용하고 있습니까? User 객체의 코드 일부를 제공 할 수 있습니까? 보안에 대한 몇 가지 구성이 있습니까? –

+0

예, FOSUserBundle을 사용하고 있습니다. 나는 질문 본문에 내 구성을 추가합니다. – nowiko

+0

당신은 로그 아웃 한 다음 다시 로그 아웃 했습니까? – qooplmao

답변

1
를 잘 작동하지만를

ROLE_DRIVER

을 할당하려면이 작업을 수행하는 것이 좋습니다. (210)
$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 %} 
+0

안녕하세요, 저는 잘 모릅니다. 그러나 오늘 코드를 시험해보십시오! 감사합니다) – nowiko

+0

흠, 하나의 역할에 이상적이며 다른 역할에 대해 작동하지 않습니다 ... – nowiko

+0

어떻게 여러 역할을 할당하고 있습니까? 복수 역할 – stevenll