SonataUser-具有角色安全性的自定义投票者



我使用的是带有sonata.admin.security.handler.role的SonataAdmin(所以这里不使用ACL)。

我正在尝试使用自定义投票者来限制对对象的访问。

服务

security.access.company_voter:
    class:      Application...VoterCompanyVoter
    public:     false
    tags:
       - { name: security.voter }

投票者应用程序。。。\Voter\CompanyVoter.php

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

但我总是得到Application...VoterCompanyVoter的实例,而不是要限制的预期对象。

原因是什么?

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

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

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

然后我不得不延长它。

请参阅我的github期中的一段精彩独白,了解更多细节。

最新更新