|
|
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
Имеются сущности: Пользователь и Роль Необходимо задавать права доступа к к информации как на уровне Пользователь так и на уровне Роль На уровне Пользователь или Роль отдельно проблем нет, а вот с реализацией одновременного указания прав доступа для Пользователь и Роль - проблема Роли -------------- РольID Название Роли Пользователи ----------------- ПользовательID Имя Пользователя РолиПользователя --------------------- ПользовательID РольID Обекты --------------- ОбъектID ..... ПраваДоступаКОбъекту ---------------------------- ОбъектID ????? Помогите советом плз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 13:49 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
sp... Может поможет ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 14:56 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
спасибо, ссылка интересная, но только раззадорила, т.к. обещанного продолжения с объединением ACL и RWD нет :( Senya_L sp... Может поможет ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 15:27 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
spспасибо, ссылка интересная, но только раззадорила, т.к. обещанного продолжения с объединением ACL и RWD нет :( Senya_L sp... Может поможет ссылка Тогда надо спросить автора, kdv, на форуме ibase.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2008, 15:38 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
Может, ввести что-то типа базовой сущности, которой и назначаются права на обьект, а пользователи и роли могут быть уже её частными случаями. Наподобие как те же ACL-ы устроены - есть уникальный SID, ему и назначены права, а чему этот SID соответствует - пользователю или группе - без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2008, 02:22 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
Сильно не вникал в суть и структуру вашей БД, но мне не понятно о чем вы ломаете голову? Роль - имхо - есть шаблон проставленных элементарных прав к каким-то объектам. Пользователь - есть аккаунт наделенный правами или вручную или просто применен шаблон. ИМЕЕМ: ------------------- Objects: guestbook, price Type_permissions: read, write&read (потому что голый write без read функционально глупо, а контроллировать их совместное присутствие - лишняя нагрузка, лучше принять что write - это еще read в любом случае, но все зависит от целей) Prior_permissions: write&read = 1, read=0 (Смысловой приоритет прав, какие права дают бОльшие полномочия - потом пригодится в примере) Accounts: peter, ivan Roles: admin, user, guest ЗНАЧЕНИЯ: ---------------------------- роли admin = guestbook (write&read), price (write&read) user = guestbook (read), price (read) guest = guestbook (None), price (None) Теперь, если мы назначаем пользователю peter <- Role admin то фактически мы просто копируем в его permission предустановленные значения из шаблона admin, то есть он получает проставленные права. Если мы удаляем, то удаляются все права определенные шаблоном Admin. Если мы добавляем как роль admin так и роль user, то в базу permissions этого пользователя права также линейно накладываются по правилу: права с бОльшим Prior_permissions имеют приоритет: То есть фактически, так как write&read > read, то peter (admin, user) - фактически будет админом с точки зрения прав на объекты. Когда мы удаляем admin из его роли, то права с шаблона admin убираются, а потом делается "пересчет"/перезапись прав которые теперь имеет с точки зрения оставшейся роли - user Когда мы руками правим его permission, например, ставим guestbook(write&read), price(read) то фактически мы не попадаем под шаблон - это означает лишь одно - пользователь peter имеет custom permission. С точки зрения интерфейса это можно обозначить как угодно - например peter (*modified) или взять последнюю примененную роль и сказать: peter = Admin(m) Ответим, зачем и когда нам нужны роли и/или custom'ные права. 1. Роли нужны для того, чтобы не иметь гиммора с ручным проставлением атомарных прав каждому юзверю. 2. Custom'ное изменение прав нужно для гибкости в случаях единичных исключений - когда конкретному пользователю необходимо сделать права, не попадающие 100% под шаблон роли 3. И последнее, когда в процессе эксплуатации появляются пользователи с одинкаковыми и нешаблонными правами - это признак завести новую Роль, под котороую они уже будут попадать. P.S.: Если я не ответил на вопрос, то перенесите этот пост куда нить, жалко писал столько. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2008, 13:50 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
И еще, возможно вы путаете Роли с Группами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2008, 13:54 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
SunVegasИ еще, возможно вы путаете Роли с Группами? Нет не путаю - имеем приложения ASP.NET доступ к которым имеем по ролям - осюда понятие роли как набор функций организованных в виде приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2008, 16:44 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
О... мля... asp... .net... ms... - извините, наверное я оффтоп. Не дружу генетически со сферой MS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2008, 20:42 |
|
||
|
Структура данных для раздачи прав доступа
|
|||
|---|---|---|---|
|
#18+
Как вариант, сделайте id пользователей нечётными, ролей - чётными))) P.S. Очень не советую заигрывать с приоритетами разрешений (например, Write имеет больший приоритет, чем Read) - бывают разрешения, которые в одну цепочку ну никак не влазят. Как правило, мы заводим словарик пресетов с битовыми масками и используем эти пресеты как разрешения. Высчитывать действующие разрешения - одно удовольствие) P.P.S. самое весёлое начинается, когда требуется разруливать наследование разрешений по иерархии - дерзайте) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2008, 08:54 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35515400&tid=1543686]: |
0ms |
get settings: |
12ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
30ms |
get forum data: |
3ms |
get page messages: |
111ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 503ms |

| 0 / 0 |
