Symfony 2 でのカスタム ボーターの作成について読んでいます。このページによると、オブジェクトを securitycontext の isGranted メソッドに渡すことができます。これは、自分のコントローラーで行ったものです。
$page = new Page();
if ( ! $securityContext->isGranted('CONTENT_CREATE', $page)) {
throw new AccessDeniedException('Fail');
}
投票メソッドはそれを受け入れる必要があるように見えますが、$object パラメーターで get_class を呼び出すと、Page エンティティを取得する代わりに、次のようになります。
Symfony\Component\HttpFoundation\Request
public function vote(TokenInterface $token, $object, array $attributes)
{
print_r(get_class($object)); die();
return VoterInterface::ACCESS_ABSTAIN;
}
私の投票者は、services.yml ファイルでサービスとして定義されています。
content_security.access.my_voter:
class: My\Bundle\Security\Authorization\Voter\MyVoter
arguments: ["@service_container"]
public: false
tags:
- { name: security.voter }
どこが間違っていますか?
アドバイスをいただければ幸いです。
ありがとう