我正在为一个新建项目评估 Symfony2。核心要求之一是;一个用户可以与许多公司相关联,并且这些关联中的每一个都可以具有由角色标识的一组不同的权限。
有没有人体验过实现类似的东西或对如何使用 Symfony2 的 ACL 系统实现这一点的看法?
将感激地接受任何建议。
我玩游戏太晚了,但也许这对其他人有帮助?
简而言之,您可以使用自定义投票器,然后利用您可以传递给投票器的第二个对象并使用它来将您的安全检查上下文化,如下所示
public function vote(TokenInterface $token, $object, array $attributes)
{
if ($this->supportsClass($object) && $company = $this->container->get('context.company')) {
foreach ($attributes as $attribute) {
if ($this->supportsAttribute($attribute)) {
if ($company == $object->getCompany()) {
return VoterInterface::ACCESS_GRANTED;
}
return VoterInterface::ACCESS_DENIED;
}
}
}
return VoterInterface::ACCESS_ABSTAIN;
}
}