|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
подниму еще раз тему: как грамотно разделить права между пользователями? мне нужно чтобы пользователь А и В, подключившись к базе и выполнив команду select * from table получили каждый свой набор данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2004, 10:44 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
Вообще-то такие вещи нужно выносить из базы, но если сильно хочеться, то можно написать серверную функцию(plsql,c), которая будет проверять права и выполнять соответствующий запрос. Соответственно, в эту функцию нужно передавать имя пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2004, 12:49 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
Нужно сделать для каждого пользователя свое представление (VIEW на этой table), и далее, например, пользователь А должен знать что он - именно пользователь A и делать select * from table_view_A. Если не ошибаюсь, в одной и последний версий PostgreSQL у процедур/функций появилась возможность возвращать множества значений. Здесь точно не знаю, проверь, м.б. стоит копать в эту сторону, если функциональность БД позволит сделать то, что тебе нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2004, 12:52 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
2hordi а почему вы считаете что внешние приложения (особенно тонкие клиенты) надежнее и быстрее внутренних механизмов постгерса. Это не флейм - просто интересно узнать мнение. Offtopic 2Shweik: как с вами можно связаться -по мылу в профиле - нет ответа . ICQ? another mail ? Хотелось бы побеседовать. А форум не позволяет посылать личные сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 22:52 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
>hordi а почему вы считаете что внешние приложения (особенно тонкие клиенты) надежнее >и быстрее внутренних механизмов постгерса. Это не флейм - просто интересно узнать >мнение. Здесь ни о каких внутренних механизмах и речи нет. Как ты делаешь в реальном клиенте: грузится таблица прав на юзера, далее по конкретному праву выбирается таблица или какой-то запрос, который будет выполняться для пользователя, задержек никаких, простейший мгновенный поиск по памяти клиентского компа. А как должна работать в таком случае база: мало того, что и так проверяются права доступа на элементы запроса (таблицы, уникальные последовательности и т.п.), так еще нужно знать какой запрос для клиента должен выполнится... В крупном проекте это значительно усложнит понимание работы, да и не нужно все это, проще запрос изменить явно. База должна делать только необходимое, остальное можно и на клиенте реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 10:09 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
Странно, а почему в Access есть разграничение прав "внутри СУБД". С точки зрения безопасности не логично предоставлять правО говорить - "Кто ТЫ?" - клиенту! IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 17:06 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
Хотя, вру - не заметил, что речь идёт не о доступе к таблице, а о доступе к отдельным полям таблицы. Access делает .... к таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 17:08 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
а почему не обсуждается RULE-s-ы ? казалось бы должен прокатывать изящней множества запросов. че-нть типа SELECT Case When (function_user_right() = 0) then (SELECT ... ну и т.п. при этом несложно сделать одноименные поля вывода (не обязательно что-то возвращая из данных) для всех выходных наборов данных, т.е. клиент с ними справится без хитрой логики. Надо только проверять обновляемость полей. в рулях (но на инсерт и апдейт), видимо можно и права на обновление разделить по-колоночно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 17:43 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
>> а почему не обсуждается RULE-s-ы ? это то-же самое, что сваять VIEW (Wireless, я с тобой полностью согласен!). "... Rules and Views Presently, ON SELECT rules must be unconditional INSTEAD rules and must have actions that consist of a single SELECT query. Thus, an ON SELECT rule effectively turns the table into a view, whose visible contents are the rows returned by the rule's SELECT query rather than whatever had been stored in the table (if anything). It is considered better style to write a CREATE VIEW command than to create a real table and define an ON SELECT rule for it. ..." Только вот как-бы это все побыстрее сделать, например возвращать принципиально разные селекты (разные в количестве записей и разные в значениях колонок) в зависимости от принадлежности юзера конкретной группе пользователей? Я это к тому, что как сделать правило (или отображение), которое сначала определяло доступ к данным, а потом возвращало соответствующие готовые выборки из таблиц(ы), без конструкций с CASE...END на каждую запись таблиц(ы)? В доках (на ПГ7.3) сказано, что нельзя сделать больше одного правила на SELECT из отношения :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 19:16 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
может попробовать: SELECT 'Все путем' AS res WHERE доступ='Ок' UNION ALL SELECT 'А кто вы такой?' AS res WHERE доступ<>'Ок'; в написании отображения? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 20:04 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
Не народ, вы увлеклись :)) Человек конкретно спросил как сделать, чтобы выполнив ОДИНАКОВЫЙ запрос разные пользователи получили разные данные. Я повторяю свой вариант типа: SELECT perm_func('SELECT A FROM B'); где perm_func - это функция, которая как параметр берет строку запроса и оценивая права текущего пользователя подменяет запрос или т.п. Успехов ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 20:35 |
|
разделение прав между пользователями
|
|||
---|---|---|---|
#18+
ну почему увлеклись? я привел пример селекта для построения ОТОБРАЖЕНИЯ, которое возвращает РАЗНЫЙ набор значений колонок (и записей) без вычисления значений "на лету" для каждой записи ТАБЛИЦ(Ы). А клиент делает ОДИНАКОВЫЙ селект из отображения. Без вьюшек не реально дать разные права на значения колонок и строк таблиц(ы). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2004, 09:47 |
|
|
start [/forum/topic.php?fid=53&msg=32533393&tid=2007852]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 154ms |
0 / 0 |