为什么要实现supportsClass&在实施选民时支持的方法?

时间:2012-04-29 18:38:19

标签: security symfony

正如您在以下链接中所看到的,supportClass&当我们调用isGranted()时,不会调用supportsAttribute方法:

是否在其他地方调用了这些方法?

为什么他们是界面的一部分?

1 个答案:

答案 0 :(得分:0)

听起来这是正常行为,因为选民必须检查班级。

这是检查课程的解决方案:

function vote(TokenInterface $token, $object, array $attributes)
{   
    $user = $token->getUser();

    //sometime the object is a class or a instance of Request
    if($object instanceOf \Symfony\Component\HttpFoundation\Request ){
        return VoterInterface::ACCESS_ABSTAIN;   
    }else{
        $class = $object->getType();
        if($class == 'Vendor\\MyBundle\\Entity\\MyEntity'){
           return VoterInterface::ACCESS_GRANTED; 
        }
    }

    return VoterInterface::ACCESS_DENIED;   
}