Авторизация в PHP + MVC, где осуществлять проверку?
Читаем про HTTP Middelware, request-response фреймворки, не зацикливаемся на MVC. В итоге влоу выходит таким:
Предположим что у нас есть интерфейс Kernel содержащий метод handle, который на вход принимает Request и на выход выдает Response. Далее...
 - Собираем Request из глобальных переменных 
 - Передаем его в херню реализующую Kernel
 - за счет применение паттерна адаптер можно сделать много вложенных друг в дружку реализаций интерфейса Kernel. Одна реализация ресолвит рауты, вторая - авторизацию хэндлит, третья добавляет CORS... и самая внутренняя уже вызывает контроллер вашего так называемого MVC каркаса.
Профит - все можно покрыть тестами, все удобно скейлится, есть кучи готовых реализаций. В конце концов есть PSR-7.
В любом случае аутентификацию надо делать во фронт-контроллере, а авторизацию - уже могут быть варианты.
Идеальный вариант - создать middleware слой между контроллером и роутером. Дать возможность подгружать туда middleware классы через конфигурацию или заранее определенную папку. Создать класс который и будет проверять сессию/куки. Обычно вся логика в таких классах лежит в методе 'run'.
Если не хотите усложнять, можете создать ApplicationController, в котором будет базовый функционал для всех контроллеров приложения, например, авторизация, и наследовать все остальные контроллеры от него.
Еще можно добавить авторизацию в качестве RequestInterceptor класса, который так же подключается к контроллеру (лучше к базовому) и реагирует на прописанные события контроллера. Подписываете перехватчик на beforeAction и проводите авторизацию. Последний способ больше для RESTful приложений.