2015-09-21 5 views
2

Я использую пользовательских избирателей symfony и использую единодушную стратегию. Доступ к диспетчеру решения зацикливается на избирателей, а isGranted return - логическое.Невозможно передать исключение изнутри Symfony security Избиратели

Мы не можем исключить исключение изнутри Избирателя, чтобы узнать, почему было отказано в доступе. Я хочу знать, какие избиратели отказали в доступе, и почему я могу показывать соответствующие сообщения пользователю для принятия мер, например. для обновления до подписной подписки. Каков наилучший способ сделать это?

+0

Почему вы не можете исключить исключение из избирателя? – malcolm

+0

Из-за того, как работают стратегии управления доступом. если мы сделаем исключение, он не перейдет к следующему избирателю. Доступ к менеджерам решений проходит над избирателями и принимает решение на основе утвердительных, консенсусных и единодушных. – vishal

+0

Итак, просто войдите в файл, что хотите. (или var_dump, или echo ...) – malcolm

ответ

0

Хороший алгоритм может быть:

  • сгенерирует исключение внутри избиратель
  • поймать его в менеджер, хранить его в массив или объект и по-прежнему
  • После цепи (петли) является завершите проверку, если менеджер «собрал» какое-то исключение и ведет себя соответственно