Мне нужно сделать проверку ACL для пользователя, прежде чем разрешить доступ к панели администратора веб-сайта Laravel 5. Каков наилучший способ сделать это для всей группы контроллеров в пространстве имен App\Http\Controllers\Admin\*
? В конечном счете, я ищу способ «установить и забыть», чтобы сделать это, а промежуточное ПО выглядит как лучший вариант.Laravel 5 - Назначить промежуточное программное обеспечение для пространства имен контроллеров
Первоначальная идея состояла в том, чтобы назначить промежуточное ПО для маршрута администратора, но это не мешает доступу к контроллерам другого маршрута, не связанного с администрированием. Это означает, что маршрут все еще может быть нацелен на контроллеры администратора и обходить проверку ACL.
Следующая идея состояла в том, чтобы вставить назначение в конструктор на контроллерах, но для этого требуется, чтобы каждый дополнительный контроллер явно включал промежуточное программное обеспечение. Это потребует от разработчика знать, что должно быть включено промежуточное программное обеспечение, которое позволяет им полностью пропустить его. Это также относится к использованию одного базового контроллера в качестве родителя для всех контроллеров администратора, поскольку разработчику необходимо знать, что базовый контроллер должен быть расширен. Сейчас это выглядит как лучшее решение.
Это возвращает нас к вопросу: может ли промежуточное программное обеспечение быть назначено для подстановочного пространства подстановок контроллера, например App\Http\Controllers\Admin\*
? Или, есть ли лучший способ для проверки ACL никогда не нуждаться в явном назначении каждому контроллеру администратора?
Это был мой вывод. Я все еще надеюсь на способ нацеливания на несколько контроллеров, хотя (с или без промежуточного программного обеспечения). Это отвечает на мой вопрос, но на самом деле это не решает. +1 для справки IoC, поскольку это не то, что я изучил. – Siphon
После пересмотра этого намного позже я обнаружил, что использование базового контроллера имеет много преимуществ для организации кода повторного использования контроллера (особенно для сеансов и ACL). Я даже пошел этот маршрут в другом проекте, чем в оригинале, поэтому я принимаю это принятый ответ. – Siphon