我正在将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
的实例,而不是要限制的预期对象。
可能是什么原因?
你是否告诉我在使用角色安全处理程序时Sonata没有将对象传递给isGranted()
?
答案 0 :(得分:1)
经过几个小时的搜索,我注意到收到的对象始终是NULL
(get_class(NULL)
返回当前的类。)
经过几天的追求,事实证明,与ACL处理程序相反,角色处理程序the default implementation doesn't pass当前对象为isGranted()
然后我要扩展它。
在my github issue中查看精彩的独白,了解更多详情。