Я бы с осторожностью использовал аспектно-ориентированное программирование и особенно перехватчики. Перехватчики и некоторые реализации AOP работают во время выполнения и фактически не изменяют код, который выполняется.
Что произойдет, если приложение развернуто неправильно, без перехватчика / аспекта? Ну, в общем, ваше приложение, вероятно, сильно зависит от функции, предоставляемой перехватчиком, и будет заметно ломаться без него. Но авторизация немного другая. Если пользователь не авторизован, что-то происходит, например, вызывает исключение. Но в типичном случае пользователь авторизован, и перехват не разрешен. Когда приложение случайно развертывается без перехватчика авторизации, оно фактически авторизует все операции.
Напротив, традиционный подход, использующий явные проверки разрешений , включает безопасность в самой чувствительной операции, так что он не зависит от внешней конфигурации поддержки аспекта перехватчика, фильтра или среды выполнения.
Исторически, когда АОП было решением проблемы, безопасность рассматривалась как вероятная жертва. К сожалению, поклонники АОП склонны сбрасывать со счетов критическое мышление, необходимое для безопасного применения его к этой важной функции. Я верю, что это можно сделать, но это не так просто, как аннотировать пару методов.