1

我正在使用 SonataAdmin sonata.admin.security.handler.role(所以我在这里不使用 ACL)。

我正在尝试使用自定义选民限制对对象的访问。

服务

security.access.company_voter:
    class:      Application\...\Voter\CompanyVoter
    public:     false
    tags:
       - { name: security.voter }

选民 应用程序...\Voter\CompanyVoter.php

#...
public function vote(TokenInterface $token, $object, array $attributes) 
{
    get_class($object);
}
#...

但我总是得到一个实例Application\...\Voter\CompanyVoter而不是预期的对象来限制。

可能是什么原因?

isGranted()您是在告诉我 Sonata在使用角色安全处理程序时不会将对象传递给吗?

4

1 回答 1

2

经过数小时的搜索,我注意到收到的对象总是NULLget_class(NULL)返回当前类)。

经过几天的寻找,事实证明,与 ACL 处理程序相反,角色处理程序的默认实现不会将当前对象传递给isGranted()

然后我不得不延长它。

有关更多详细信息,请参阅我的 github 问题中的一个不错的独白。

于 2013-07-23T15:32:03.117 回答