我正在研究一个Symfony2应用程序,我们想在其中介绍Security Voters.DX计划(jay!)为我们带来了这个机制的简单版本,所以我想使用它.唯一困扰我使用\Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter的事实是,在实施抽象isGranted方法时我不能再投弃权票了.我想为我们的应用程序更改它,但从安全的角度来看,我非常感谢您对此事的看法.
需要说明的是,在我们的应用程序中,我们将使用unanimous访问决策管理器策略 - 简而言之:您至少需要一个ACCESS_GRANTED而且不需要ACCESS_DENIED- 因为我们以后可能会引入选民来禁止IP地址或其他恶作剧.
如下面的相关代码段所示,只要AbstractVoter支持属性的实现,投票将默认为Denied.
public function vote(TokenInterface $token, $object, array $attributes)
{
if (!$object || !$this->supportsClass(get_class($object))) {
return self::ACCESS_ABSTAIN;
}
// abstain vote by default in case none of the attributes are supported
$vote = self::ACCESS_ABSTAIN;
foreach ($attributes as $attribute) {
if (!$this->supportsAttribute($attribute)) {
continue;
}
// as soon as at least one attribute is supported, default is to …Run Code Online (Sandbox Code Playgroud)