2016-05-13 3 views
0

Я пытаюсь реализовать FOSUserBundle в своем проекте. Я только что создал функциональность Group, создал группу и добавил к ней пользователя. Что меня действительно смущает, так это то, что пользователь не наследует групповые роли, как я ожидал. Мое предположение состояло в том, что если у пользователя есть группа, которая имеет роль ROLE_ADMIN, например, что пользователь также будет иметь эту роль. Так что-то вродеSymfony FOSUserBundle Цель группы

if (!$this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) { 
     throw $this->createAccessDeniedException(); 
    } 

бы не бросить исключение, но это мне, что противоречит тому, что говорят здесь

роли группы Документы будут предоставлены все пользователи, принадлежащий ему ,

Так что мой вопрос в том, как правильно использовать группы? Я должен разместить всех пользователей хотя бы в одной группе и никогда не проверять роли, назначенные пользователю, но проверить их роли?

ответ

1
  • Служба security.context устарела вместе с вышеуказанным изменением. Рекомендуется использовать вместо: @security.authorization_checker => isGranted() @security.token_storage => getToken() @security.token_storage => setToken()

Так просто:

if($this->isGranted('ROLE_ADMIN')) 

Referre для Symfony компонентов:

protected function isGranted($attributes, $object = null) 
    { 
     if (!$this->container->has('security.authorization_checker')) { 
      throw new \LogicException('The SecurityBundle is not registered in your application.'); 
     } 

     return $this->container->get('security.authorization_checker')->isGranted($attributes, $object); 
    } 
+0

Спасибо! Я ошибся, проверяя это. Я не выходил из системы и не возвращался туда, из-за чего профайлер показывал, что у моего пользователя нет назначенных ролей. Ну, теперь он отлично работает – Kable