使用Symfony Voters
系统,很容易为Web应用程序启动并运行良好的ACL。但是,您必须在一开始就决定使用什么策略。
Symfony支持3种策略:affirmative
,consensus
和unanimous
(参见他们的documentation)
affirmative
(默认值):只要有一位选民授予访问权限,就会授予访问权限;
consensus
:如果有更多选民授予访问权限而不是拒绝,则授予访问权限;
unanimous
:这仅在所有选民授予访问权限时授予访问权限。
我目前正在使用affirmative
策略。在一个特例中(到目前为止,未来可能会有更多),我需要使用unanimous
策略。
有没有办法做到这一点,或者我只需要在那里制作一个自定义检查系统(复制所有相关选民的代码)?
答案 0 :(得分:0)
您是否尝试使用自己的策略通过自定义类扩展Symfony的AccessDecisionManager
并在服务容器中注册?你可以检查这个类的实现,看看你可以通过在类中创建一个简单的方法来定义自己的策略。
另一种选择是,您可以尝试使用access_control
和allow_if
作为here