Я использую шаблон репозитория для запроса нашей базы данных с использованием NHibernate. Это позволяет легко делать такие вещи, как:
public T GetById (int id) {...}
Но это мало помогает, когда кто-то начинает копаться в строках запроса, чтобы увидеть вещи, которые ему запрещены.
Чтобы составить это, некоторые объекты являются глубоко вложенными потомками родительского объекта, для которого должна выполняться авторизация.
Например, блог -> автор -> пост -> комментарий. В этом надуманном примере мы хотели бы дать авторам возможность редактировать свои посты и комментарии к этим постам, но не видеть и не редактировать посты других авторов. Легко проверить, что сообщение принадлежит автору, немного сложнее убедиться, что комментарий принадлежит автору. У нас есть несколько примеров, которые идут глубже.
Итак ... как нам сделать авторизацию (в модели или в репозитории)?