Symfony2 自定义安全投票器不工作

Symfony2 custom security voter not working

我为基于 symfony (2.6.1) 的项目实现了自己的安全投票器。我是在这篇博文之后这样做的:http://symfony.com/blog/new-in-symfony-2-6-simpler-security-voters and this documentation: http://symfony.com/doc/current/cookbook/security/voters_data_permission.html

我现在的问题是,我的选民的方法 "isGranted" 从未被调用。

我的选民 class 看起来像这样:

namespace AppBundle\SecurityVoter;
use Symfony\Component\Security\Core\Authorization\Voter\AbstractVoter;
use Symfony\Component\Security\Core\User\UserInterface;

class FolderVoter extends AbstractVoter
{
    const EDIT = 'edit';

    protected function getSupportedClasses()
    {
        return array('\MyApp\Entity\Folder');
    }

    protected function getSupportedAttributes()
    {
        return array(self::EDIT);
    }

    protected function isGranted($attribute, $folder, $user = null)
    {
        if (!$user instanceof UserInterface) {
            return false;
        }

        if ($folder->getUserId() == $user->getId()) {

            return true;
        }

        return false;
    }
}

class在services.yml中的配置方式如下:

security.access.folder_voter:
class: AppBundle\SecurityVoter\FolderVoter
public: false
tags:
  - { name: security.voter }

我正在使用树枝模板中的方法 'is_granted'。我错过了什么实施或我做错了什么它不起作用?

我刚刚自己找到了解决方案。这很容易。但在某些方面也很讨厌。

安装了这个:

protected function getSupportedClasses()
{
    return array('\MyApp\Entity\Folder');
}

我必须这样声明 class 名称。所以没有前导反斜杠:

protected function getSupportedClasses()
{
    return array('MyApp\Entity\Folder');
}

也许这可以在总体上改进安全选民实施:-)