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

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

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

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

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

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

0

Решение

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]