2

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

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

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

4

1 回答 1

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;   
}
于 2012-07-13T10:44:27.257 回答