2015-07-09 3 views
3

Как проверить роль в голосовании с помощью Symfony?Как проверить роль в избирателе с Symfony?

Я пытался использовать следующий

$this->get('security.context')->isGranted('ROLE_ADMIN'); 

Для этого мне нужно впрыскивать security.context услугу, которая будет инициировать циклическую ссылку.

  • Должен ли я вводить контейнер, который считается плохой практикой?
  • Должен ли я делать $user->getRoles() и проверить, является ли роль «ROLE_ADMIN» , принадлежащая пользователю $ user?
  • Как я могу управлять иерархией и наследовать роль?
+0

Какая точная версия у вас есть? Начиная с версии 2.6, 'security.context' был разделен на 2 отдельные службы, чтобы предотвратить некоторые проблемы с круговой ссылкой. Вы можете прочитать об этом здесь: http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements –

+1

У меня версия 2.3 ... но я не думаю, что она меняет вопрос циркулярной ссылки с избирателями. –

ответ

0

Вы можете попытаться ввести RoleHierarchyInterface и перейти с номером 3.

0

Кроме того, вы можете использовать AccessDecisionManagerInterface:

class UserCheckerSomething 
{ 
    private $decisionManager; 

    public function __construct(AccessDecisionManagerInterface $decisionManager) 
    { 
     $this->decisionManager = $decisionManager; 
    } 

    public function checkAccess(TokenInterface $token) 
    { 
     return $this->decisionManager->decide($token, ["ROLE_ADMIN"]); 
    } 
} 

И впрыскивать "@security.access.decision_manager" в службу :)