Symfony 将对象传递给自定义投票者?

Symfony 将对象传递给自定义投票者?,symfony,symfony-security,Symfony,Symfony Security,我一直在阅读有关在Symfony 2中创建自定义投票者的内容。根据,可以将对象传递给securitycontext的isgrated方法,这是我在自己的控制器中完成的: $page = new Page(); if ( ! $securityContext->isGranted('CONTENT_CREATE', $page)) { throw new AccessDeniedException('Fail'); } 看起来投票方法应该接受它,但是,当我在$object参数上调

我一直在阅读有关在Symfony 2中创建自定义投票者的内容。根据,可以将对象传递给securitycontext的isgrated方法,这是我在自己的控制器中完成的:

$page = new Page();

if ( ! $securityContext->isGranted('CONTENT_CREATE', $page)) {
    throw new AccessDeniedException('Fail');
}
看起来投票方法应该接受它,但是,当我在$object参数上调用get_类,而不是获取我的页面实体时,我得到:

Symfony\Component\HttpFoundation\Request

我的投票者在My services.yml文件中定义为服务:

content_security.access.my_voter:
        class:      My\Bundle\Security\Authorization\Voter\MyVoter
        arguments:  ["@service_container"]
        public:     false
        tags:
            - { name: security.voter }
我哪里做错了

谢谢你的建议


谢谢

当某个电话被批准时,每一位登记选民都会被呼叫

事实上,框架本身(或bundle f.e)调用是在请求时被授予的

您必须使用supportsClass、supportsAttribute。。。为了检查对象是否是您正在等待的对象,如果不是,则返回VoterInterface::弃权值


看看现有的实现(在框架本身中(比如RoleVoter)或者这里:

hm我记得几天前有一个类似的问题……试图找到它。找到了……Pierre收到了投票者类,而不是对象的
get\u class()
。这可能有关系。您是否尝试转储该对象?它确实是请求还是
get\u class
只是返回了错误的FQCN。Pierre发布了第二个问题(几乎相同)几分钟后这里:+1我没想到投票者也被要求进入页面…facepalm-这是正确的解释,谢谢你启发我Florian:D
content_security.access.my_voter:
        class:      My\Bundle\Security\Authorization\Voter\MyVoter
        arguments:  ["@service_container"]
        public:     false
        tags:
            - { name: security.voter }