正如您在以下链接中看到的,当我们调用 isGranted() 时,supportsClass 和 supportsAttribute 方法不会被调用:
这些方法是否在其他地方被调用?
为什么它们是界面的一部分?
正如您在以下链接中看到的,当我们调用 isGranted() 时,supportsClass 和 supportsAttribute 方法不会被调用:
这些方法是否在其他地方被调用?
为什么它们是界面的一部分?
听起来这是一种正常的行为,因为选民必须检查班级。
这是检查课程的解决方案:
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;
}