我正在为一个绿地项目评估Symfony2。核心要求之一是:;用户可以与许多公司相关联,并且这些关联中的每一个都可以具有由角色标识的不同权限集。
有没有人有过类似的实施经验,或者对如何使用Symfony2的ACL系统实现这一点有什么看法?
将感激地接受任何建议。
我来不及玩游戏了,但也许这会帮助其他人?
http://brentertainment.com/2012/02/28/contextualizing-your-symfony2-application-with-the-service-container/
简而言之,你可以使用自定义投票者,然后利用第二个对象,你可以将其传递到投票者中,并使用它来将你的安全检查上下文化,如
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;
}
}