如何使用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"
注入到服务中:)