我的应用程序中有五个自定义选民,并使用策略" 共识 ".
有时我的选民不能正常工作,调试后我找到了原因.
标准Symfony RoleHierarchyVoter始终返回"1",因此"已授予 "结果的总和等于 " 拒绝 "结果的总和.所以,我需要禁用此选民,因为我不使用RoleHierarchy.
1)如何在配置中禁用Voter?
2)这个问题是否存在另一种解决方案?
非常感谢您的帮助!
更新.
所以,我创建了自己的RoleHierarchyVoter,它总是返回false.这个Voter取代了标准选民,但我不确定这个解决方案是否真实.也许还有其他解决方案
所以,目前我已经通过创建自己的 RoleHierarchyVoter解决了这个问题,它总是返回 false。
目前无法删除标准 RoleHierarchyVoter 的定义,因为它以优先级 TYPE_BEFORE_OPTIMIZATION 注册并在我自己的编译器之前执行。
顺便说一句,您可以在SecurityBundle/DependencyInjection/SecurityExtension.php中找到下一行:
private function createRoleHierarchy($config, ContainerBuilder $container)
{
if (!isset($config['role_hierarchy'])) {
$container->removeDefinition('security.access.role_hierarchy_voter');
return;
}
$container->setParameter('security.role_hierarchy.roles', $config['role_hierarchy']);
$container->removeDefinition('security.access.simple_role_voter');
}
Run Code Online (Sandbox Code Playgroud)
即使我设置role_hierarchy: ~,isset($config['role_hierarchy']也会返回 true。
此问题已报告为错误https://github.com/symfony/symfony/issues/16358