如何使用Symfony检查投票人中的角色


How to check role in a voter with Symfony?

如何使用Symfony检查投票人中的角色?

我尝试使用下面的

$this->get('security.context')->isGranted('ROLE_ADMIN');
要做到这一点,我需要注入security.context服务,它将触发一个循环引用。
  • 我应该注入容器,这是一个不好的做法?
  • 我应该做$user->getRoles()和检查角色'ROLE_ADMIN'是属于$user?
  • 如何管理角色的层次结构和继承?

你可以尝试注入RoleHierarchyInterface,然后使用第3点。

也可以使用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"注入到服务中:)