Блокировка CRUD-уровня на объектах - шаблоны проектирования - PullRequest
1 голос
/ 22 августа 2009

Знаете ли вы какие-либо шаблоны проектирования для реализации блокировки на уровне CRUD для объектов, то есть для одного экземпляра объекта я должен иметь возможность указывать разные уровни контроля доступа для каждой из операций (Create, Read, Update, Удалять). Например, человек А может прочитать и обновить объект Z, но не может удалить его. Человек B может читать, обновлять и удалять объекты X, Y и Z.

Меня беспокоит то, что происходит при больших объемах данных. Другими словами, я ищу что-то эффективное.

Однажды я реализовал этот вид управления доступом для объектов, и я знаю, как это можно сделать, мне просто интересно, существует ли на самом деле какой-то шаблон проектирования для этого.

Ответы [ 2 ]

1 голос
/ 22 августа 2009

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

Один из примеров хорошего контроля на уровне объектов можно найти в Lotus Notes, который предлагает точный детальный доступ к объектам, как вы описываете. (Notes не известна своей звездной производительностью, но довольно безопасна в таких системах).

0 голосов
/ 22 августа 2009

Я рассматриваю это как частный случай авторизации любого "сервиса".

Требуется, чтобы у вас был какой-то способ узнать учетные данные звонящего. Если вы не хотите передавать такую ​​информацию явно каждому методу, вам нужен неявный «контекст», доступный при определении авторизации. Администрирование таких возможностей индивидуально для каждого пользователя становится очень неудобным, поэтому вам, как правило, требуется контроль доступа на основе ролей и способы распределения групп пользователей по ролям.

Все это подразумевает не столько шаблон проектирования, сколько основу для использования. Фреймворки, такие как Spring и Java EE, имеют такие встроенные возможности, что, в свою очередь, вполне может использовать каталоги с использованием LDAP.

Так что мой «шаблон» - не изобретать велосипед, найти подходящий каркас и использовать его.

...