|
Страницы: [1] | << Новый | Старый >> | Ответ не возможен |
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
Автор | Сообщение | |||
Гость | gimail at mail dot ru url://forum.message:136 passport - privilege - Часто задаваемые вопросы gimail at mail dot ru > Вопрос: Как можно использовать систему управления привилегиями для того, что бы пользователи могли редактировать только свои сообщения в форуме? Вопрос: как свести эти две проверки во времени (и в месте)? То есть, как сказать системе безопасности (которая изначально ничего не знает про структуру объектов сайта), что для выполнения какого-то действия кроме наличия привилегии нужно еще и выполнение некоего условия, зависящего от входных параметров Предлагаю добавить понятие «условная привилегия», в комплекте к которой идет имя класса и функции, которая анализирует входные параметры, и результат этот функции учитывается при проверке привилегий. Кстати, я не совсем понял, как так, привилегии могут создаваться администраторами, а соответствие между привилегиями и действиями жестко задает программист? Юрий Истомин (Screamer) | |||
21.01.05 19:12 | URL сообщения | |||
Гость | gimail at mail dot ru url://forum.message:137 gimail at mail dot ru Кстати, еще мысль: к группам пользователей указывать роли по умолчанию. Эти роли автоматически копируются пользователю при его добавлении в данную группу, после чего теряют связь с группой - можно как угодно менять их состав, при изменении состава ролей у группы у пользователей этой группы изменения не проводятся, при выводе пользователя из группы роли, добавленные в связи со входом в группу, не отбираются. То есть, банальная автоматическая копировалка Юрий Истомин. | |||
21.01.05 19:44 | URL сообщения | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:138
Нет, «условная привилегия» - это не совсем то. На самом деле можно говорить о наличии нескольких уровней в проверке привилегий. Первый уровень, самый низкий - это собственно сама подсистема управления привилегиями. Эта подсистема ничего не знает о структуре всего остального сайта. Как очень упрощенный вариант, эту подсистему можно рассматривать как отвечающую на вопрос «записал ли кто-нибудь в список привилегий текущего пользователя такую-то строку?». «Такая-то срока» - это имя привилегии. Больше подсистема управления привилегиями ничего не проверяет. Второй уровень - я его у себя называю «проверка возможностей». На этом уровне мы уже знаем структуру системы, для которой следует распределять привилегии. Раньше этого уровня у меня не было, но со временем оказалось полезным выделить его все же в отдельный уровень. Этот уровень так же занимается проверкой привилегий, однако по смыслу он уже не принадлежит подсистеме проверки привилегий, а принадлежит той системе, для которой распределяются привилегии. На этом уровне мы уже не говорим о проверке привилегий, а как бы задаем вопрос, может ли пользователь выполнить такое-то действие над таким-то объектом. Понятно, что на этот вопрос мы отвечаем с учетом проверки привилегий. Для каждго отдельного действия создается отдельная функция, которая проверяет возможность его выполнения. На этом уровне (внутри этих функций) мы:
Под словом «привилегии могут создаваться администраторами» я имел в виду, что в системе могут появиться привилегии, имена которых программист не знает. Действительно, как это предложено в вопросе о доступе к редактированию одного раздела новостей, именно администратор задает имя раздела новостей, которое будет подставляться в имя привилегии. Однако именно программист решает, что это имя новостей нужно прочитать из базы и на его основе сформировать имя проверяемой привилегии. Именно программист пишет функцию уровня «проверки возможностей», которая сопоставляет это имя раздела новостей тому действию, возможность выполнения которого проверяет эта функция. Следует так же помнить о различии базовых и динамических привилегий. Имя базовой привилегии жестко задается программистом. Администраторы могут создавать только динамические привилегии. Поскольку динамическая привилегия всегда является дочерней по отношению к базовой, то имя динамической привилегии лишь отчасти является произвольным.
Можно, в общем-то. Хотя, в текущей версии не составляет труда скоприровать один список привилегий в другой (как между пользователями, так и из роли - пользователю). При редактировании список привилегий рассматривается как обычный текстовый файл, и редактируется он в textarea. Ctrl-Insert, Shift-Insert и все дела. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
21.01.05 20:23 | URL сообщения | Приват | Инфо об авторе | |||
Гость | gimail at mail dot ru url://forum.message:143 gimail at mail dot ru
Получается, что он даже смотреть ни на что не может?.. Юрий Истомин. | |||
24.01.05 18:57 | URL сообщения | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:144
Не для всех действий требуется проверка привилегий. Некоторые действия могут быть разрешены всем посетителям сайта. Если действие разрешено для всех посетителей сайта, то подсистема проверки привилегий не требуется для того, что бы проверить, может ли текущий пользователь выполнить это действие. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
24.01.05 19:14 | URL сообщения | Приват | Инфо об авторе | |||
Гость | gimail at mail dot ru url://forum.message:145 gimail at mail dot ru Допустим, нам надо разграничивать доступ к страницам на сайте, организованным иерархически, так что странице a/b/c соответствует привилегия page.a.b.c. Получается, что данная привилегия (явно динамическая) должна существовать в списке привилегий? А при создании новой страницы надо автоматически создавать новую соответствующую привилегию? Или имя привилегии и формируется динамически в зависимости от объекта? | |||
24.01.05 19:32 | URL сообщения | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:146
Или что Вы имели в виду? ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
24.01.05 19:39 | URL сообщения | Приват | Инфо об авторе | |||
Screamer Юрий Истомин Янв, 2005 Сообщений: 6 | Screamer url://forum.message:147
А как сказать системе безопасности, что данное действие проверять на доступ не надо? Я рассматриваю случай, когда на входе в цмс стоит общая система безопасности, которая проверяет весь доступ | |||
24.01.05 19:48 | URL сообщения | Приват | Инфо об авторе | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:148 А как Вы собираетесь «говорить системе», что данное действие надо проверить на доступ? ~~~~~ 24 Янв 2005, 17:51 ~~~~~
Если привилегии требуются всегда, значит привилегии требуются всегда, и анонимный пользователь вообще ничего не сможет сделать ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
24.01.05 19:50 | URL сообщения | Приват | Инфо об авторе | |||
Screamer Юрий Истомин Янв, 2005 Сообщений: 6 | Screamer url://forum.message:149
Я имел в виду спросить, что, допустим, я создал новую страницу - a/b/d. Если в таблице иерархий есть запись «У Юзера есть привилегия pages.a.b» - он получит доступ к a/b/d? Я уточню вопрос: хранятся ли в системе ВСЕ привилегии, соответствующие ВСЕМ объектам (для проверки валидности этих привилегий, например)? | |||
24.01.05 19:53 | URL сообщения | Приват | Инфо об авторе | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:150 Все зависит от способа проверки привилегий. Если Вы распределяете доступ к иерархически организованному объекту, то имеет смысл проверять наличие «этой или любой родительской привилегии». В таком случае, если пользователь обладает привилегией page.a.b, то он автоматически получит доступ к папкам a/b, a/b/c, a/b/c/d, a/b/e и т.п.
В приведенном Вами примере следует храниьт только одну, родительскую привилегию.
имя привилегии считается валидным, если оно соответствует правилам составления имен привилегий. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
24.01.05 20:01 | URL сообщения | Приват | Инфо об авторе | |||
Гость | no at mail dot ru url://forum.message:356 no at mail dot ru Я хочу дать полные права на раздел news.a.b.c Мне нужно разрешать все привелегии вида news.*.a.b.c ? | |||
03.05.05 21:45 | URL сообщения | |||
popoff Yuri ![]() Июл, 2004 Сообщений: 923 | popoff url://forum.message:361
Как возможный вариант - да. Другой вариант - дополнительно требовать привилегию типа news.access.a.b.c для выполнения каждого действия. Тогда для полного доступа все привилегии (все news.*, кроме news.access[.*]) можно будет перечислить внутри одной из ролей, а привилегию news.access.a.b.c - давать администраторам отдельно, в зависимости от того, кто куда имеет доступ. Этот способ хорош еще и тем, что если мы не хотим им пользоваться, то просто разрешаем привилегию news.access, а разрешения на конкретные разделы задаем привилегиями news.*.a.b.c. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. | |||
10.05.05 18:36 | URL сообщения | Приват | Инфо об авторе | |||
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
Страницы: [1] | << Новый | Старый >> | Ответ не возможен |
Вход |
Цитирование материалов моего сайта приветствуется! при условии видимой действующей! гиперссылки на мой сайт. [Ссылки] Если Вы нашли опечатку на этой странице, пожалуйста, выделите ее мышью и нажмите Ctrl+Enter. Сделаем язык чище! (c) Yuri Popoff, 2004 - 2008, popoff.donetsk.ua, style.donetsk.ua |
![]() |