动态更改Symfony投票策略

时间:2016-07-02 17:16:12

标签: symfony security acl symfony-security

使用Symfony Voters系统,很容易为Web应用程序启动并运行良好的ACL。但是,您必须在一开始就决定使用什么策略。

Symfony支持3种策略:affirmativeconsensusunanimous(参见他们的documentation

  

affirmative(默认值):只要有一位选民授予访问权限,就会授予访问权限;
  consensus:如果有更多选民授予访问权限而不是拒绝,则授予访问权限;
  unanimous:这仅在所有选民授予访问权限时授予访问权限。

我目前正在使用affirmative策略。在一个特例中(到目前为止,未来可能会有更多),我需要使用unanimous策略。

有没有办法做到这一点,或者我只需要在那里制作一个自定义检查系统(复制所有相关选民的代码)?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用自己的策略通过自定义类扩展Symfony的AccessDecisionManager并在服务容器中注册?你可以检查这个类的实现,看看你可以通过在类中创建一个简单的方法来定义自己的策略。

另一种选择是,您可以尝试使用access_controlallow_if作为here