Изменить стратегию голосования Symfony динамически
С Symfony Voters
Система довольно легко получить хороший ACL и запустить для веб-приложения. Тем не менее, вы должны сначала решить, какую стратегию вы хотели бы использовать.
Symfony поддерживает 3 стратегии: affirmative
, consensus
а также unanimous
(см. их документацию)
affirmative
(по умолчанию): это предоставляет доступ, как только один избиратель предоставляет доступ;consensus
: Это дает доступ, если число избирателей, предоставляющих доступ, превышает число отказавших;unanimous
: Это дает доступ только тогда, когда все избиратели предоставляют доступ.
Я в настоящее время использую affirmative
стратегия. В одном особом случае (пока, может быть, будет больше в будущем), мне нужно использовать unanimous
стратегия.
Есть ли способ сделать это, или мне просто нужно создать там систему проверки (скопировать код всех вовлеченных избирателей)?
1 ответ
Вы пытались расширить Symfony's AccessDecisionManager
вашим собственным классом с собственной стратегией и регистрацией в сервисном контейнере? Вы можете проверить реализацию этого класса и увидеть, что вы можете определить свою собственную стратегию, создав простой метод внутри класса.
Другой вариант, вы можете попробовать использовать access_control
а также allow_if
как сказано здесь