Где разместить код авторизации

0

У меня есть приложение PHP MVC. Бизнес-логика реализована на уровне сервиса и модели домена. Мой вопрос: где я должен выполнять проверки авторизации? В служебном слое? Или модель домена?

В обсуждении шаблона уровня обслуживания, http://martinfowler.com/eaaCatalog/serviceLayer.html, Мартин Фаулер предпочитает отделять логику приложения от "бизнес-логики". Первый входит в сервисный уровень, последний - в объекты домена.

Некоторые из моих правил авторизации сложны. Авторизация может зависеть от текущего пользователя, его ролей, состояния многих других несвязанных объектов и т.д. Они, похоже, принадлежат объектам домена или, в некоторых случаях, фабрикам для этих объектов.

Но в других случаях правила довольно просты. Например, "только супервизор может утвердить новую запись в доске объявлений". В этих случаях у меня возникает соблазн проверить авторизацию на сервисном уровне. Он устраняет требования безопасности и, помещая их в прослушиватель сервисного уровня (mock-able), мой код становится легче тестировать.

Итак, вопрос в том, должен ли я ставить простые проверки авторизации на уровне службы и более сложные в объектах домена? Или я прошу о неприятностях, разделив его на два слоя?

  • 0
    Я удалил свой предыдущий ответ, так как я думаю, что мой ответ был больше связан с проверкой (которая определенно относится к модели предметной области), а не с проверкой подлинности. Вот хороший вопрос, который похож на ваш: stackoverflow.com/questions/7261490/…
Теги:
design-patterns
authorization

1 ответ

0
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню