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