使用 Symfony Voters
系统,可以很容易地为 Web 应用程序启动和运行良好的 ACL。但是,您必须在一开始就决定要使用什么策略。
Symfony 支持 3 种策略:affirmative
、consensus
和 unanimous
(参见它们的 documentation)
affirmative
(default): This grants access as soon as there is one voter granting access;
consensus
: This grants access if there are more voters granting access than denying;
unanimous
: This only grants access once all voters grant access.
我目前正在使用肯定
策略。在一种特殊情况下(到目前为止,也许将来会有更多),我需要使用 unanimous
策略。
有没有办法做到这一点,还是我只需要在那里制作一个自定义检查系统(复制所有相关选民的代码)?
最佳答案
您是否尝试过使用自己的策略通过自定义类扩展 Symfony 的 AccessDecisionManager
并将其注册到服务容器?您可以检查此类的实现,并了解您可以通过在类中创建一个简单的方法来定义自己的策略。
另一种选择是您可以尝试使用 access_control
和 allow_if
,如 here 所述
关于symfony - 动态更改 Symfony 投票策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162657/