Шаблон репозитория и расслоение. Где я могу применить безопасность? - PullRequest
10 голосов
/ 09 декабря 2008

Я делаю все возможное, чтобы спроектировать свое веб-приложение с хорошим разделением между слоями. Я использую шаблон репозитория, и поэтому у меня есть SQLObjectRepository, который вызывается моим ObjectService, который вызывается моим веб-интерфейсом.

В моей объектной модели пользователь связан с одной или несколькими областями, которые должны фильтровать объекты, к которым они должны иметь доступ. У меня вопрос, когда я запрашиваю объекты, я помещаю код в службу, чтобы установить разрешения для объектов, или этот код должен быть в хранилище? Если пользователь является участником 2 регионов, я должен передать пользователя в качестве параметра службе или передать регионы пользователя службе?

1 Ответ

3 голосов
/ 10 декабря 2008

Я бы:

  • Напишите проверку безопасности таким образом, чтобы ее можно было применить в любом месте, которое вам нравится. Таким образом, вы можете выполнить рефакторинг при изменении требований.

  • Если проверка безопасности действительно будет всегда , поместите ее на уровень хранилища (или, лучше, в аспекте, если ваш язык его поддерживает), чтобы все службы совместно использовали общую безопасность, если они используют один и тот же репозиторий. В противном случае поместите его в сервис (или в аспект, действующий на сервис).

  • передать весь пользовательский объект в механизм проверки безопасности:

    • если проверка безопасности позднее станет более сложной (зависит от других свойств пользователя), API не изменится;
    • это имеет более смысловой смысл - вы проверяете, есть ли у пользователя разрешение на что-то, а не список стран.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...