Я знаю, что это довольно старый вопрос, но у меня был такой же вопрос, так что это может помочь:
В моем текущем проекте политика состоит в том, чтобы наслоить проверки авторизации. Таким образом, проверки будут проводиться там, где они подходят лучше всего:
- , если это важно для согласованности данных, проверки выполняются в модели (очень редкие случаи, должны быть установлены в документации API!).
- большинство проверок выполняется на уровне контроллера, поэтому большинство проверок находятся в одном месте .
- некоторые проверки выполняются в «представлении» (это означает, что они управляют выводом JSON API, и это, в свою очередь, меняет поведение во внешнем интерфейсе). Это довольно редко, так как в основном они основаны на данных, подаваемых с контроллера, а не на запрос прав пользователя напрямую.
Я нашел это решение после прочтения этого поста. В нем дается хорошее резюме того, почему использование контроллера является хорошей идеей и каковы альтернативы.
Основная причина, по которой я выбрал контроллер в качестве места для проверок авторизации, заключается в том, что он позволяет модели (и данным, которыми она управляет) быть независимой от логики приложения, что включает авторизацию.
Пожалуйста, имейте в виду, что это полностью зависит от того, чего вы хотите достичь. Я просто хотел показать, что у меня работает.