次のリンクでわかるように、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;
}