Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Вниз

Как мне узнать, есть ли у юзера права на данную роль   Найти похожие ветки 

 
Megabyte ©   (2006-03-17 21:58) [0]

Сабж. Мне, в зависимости от от роли, надо показывать соответствующий интерфейс пользователя. Как мне определить, что данный логин имеет права на какую-то роль(каждый логин у меня будет иметь только одну роль)?


 
tesseract ©   (2006-03-17 22:52) [1]

Создать поле с полномочиями в базе даных (если база подерживает - то шифрованное)


 
Sergey Masloff   (2006-03-17 23:04) [2]

CURRENT_ROLE


 
tesseract ©   (2006-03-17 23:16) [3]

Забыл спросить - в какой-таки базе работаем?


 
Megabyte ©   (2006-03-18 01:44) [4]


> Sergey Masloff   (17.03.06 23:04) [2]

Да это понятно. Не понятно, как сформировать запрос? С чем сравнивать и как сравнивать? Current_role = "название роли"(строка)?

> tesseract ©   (17.03.06 23:16) [3]
> Забыл спросить - в какой-таки базе работаем?

Я ж написал Firebird.


 
jack128 ©   (2006-03-18 01:46) [5]

Megabyte ©   (18.03.06 1:44) [4]
Не понятно, как сформировать запрос?

select current_role from rdb$database


 
Megabyte ©   (2006-03-18 10:41) [6]


> jack128 ©   (18.03.06 01:46) [5]

Спасибо

Но вот самый главный вопрос. У юзера(конкретный логин) есть права на данную роль(единственную). Мне надо, чтобы при вводе логина и, допустим,  роли, нужно проверить, может ли данный юзер использовать эту роль, чтобы не получилось так, что логин будет один, а введенная роль не будет соответствовать этому логину. Ругнется уже на этапе использования программы.


 
Sergey Masloff   (2006-03-18 11:35) [7]

Megabyte ©   (18.03.06 10:41) [6]
Да не будет у него роли если прав нету. Ты в параметрах коннекта указываешь юзера и запрашиваемую роль. Если у данного юзера данной роли нет то законнектится то он законнектится а вот роли у него не будет.


 
Megabyte ©   (2006-03-19 14:31) [8]


> Sergey Masloff   (18.03.06 11:35) [7]

Да я понимаю это.
Но мне надо, в зависимости от роли, показывать соответствующий интерфейс. Как мне выяснить, на какую роль юзер имеет права? Т.е. если он имеет роль№1, то один интерфейс, если роль№2 - другой. Вопрос не только в безопастности, но и в различном интерфейсе.


 
kaif ©   (2006-03-19 15:42) [9]

Запроси роли из системной таблицы. Узнаешь, какой юзер какими ролями владеет:
select * from rdb$roles
А все привилегии можно здесь узнать:
select * from rdb$user_privileges

Я обычно соединяюсь как просто юзер (без роли). Затем узнаю все, что касается ролей и переподключаюсь еще раз, но уже окончательно, с выбранной ролью.
Двойной коннект в IB не так сильно тормозит, чтобы о нем сильно беспокоиться.
Я обычно даю не более одной роли одному юзеру. Так проще администрировать. Но это дело вкуса.


 
Megabyte ©   (2006-03-20 01:38) [10]


> Я обычно даю не более одной роли одному юзеру.

Дык у меня так и есть. ;)


 
stud ©   (2006-03-20 14:35) [11]

kaif ©   (19.03.06 15:42) [9]
Но мне надо, в зависимости от роли, показывать соответствующий интерфейс

так роль указывается при подключении!! если роль известна - в чем проблема показать нужный интерфейс???
если юзер не имеет права на роль - какая разница какой нерабочий интерфес ему показывать?


 
kaif ©   (2006-03-20 17:38) [12]

2 stud ©   (20.03.06 14:35) [11]

У меня роль не указывается при подключении.
Я уже сказал, что я назначаю не более 1 роли каждому юзеру.
Это и дает возможность не указывать роль при подключении.

1. Юзер набирает только логин и пароль
2. Соединение с базой данных открывается. Приложение запрашивает роль юзера из системной таблицы и запоминает в какой-то переменной.
3. Соединение закрывается и заново соединяется с базой данных, уже указав роль юзера в соединении.
--------------------------------------
Преимущество такого подхода - централизованное управление ролями пользователей. У меня есть интерфейс управления привилегиями (трехуровневое дерево слева + справа страницы с закладками для разных целей):

PUBLIC
  MANAGER
     Vasia
     Irina
     Katya
  ACCOUNTANT
     Marina

Встав на любой пункт в дереве, справа отображаются всякие дела, связанные с привилегиями. Привилегии наследуются по дереву от верхнего уровня к нижнему. Если пользователю назначить другую роль. то он просто перемещается в другую папку в дереве. Мне не нужно еще ходить и объяснять пользователю, чвто у него теперь новая роль и ему нужно вводить слово MANAGER в качестве роли при коннекте. Если нужно назначить какую-то привилегию всем, то я ее назначаю уровню PUBLIC. Если нужно что-то назначить какой-то роли, скажем, ACCOUNTANT, я назначаю ей. Если нужно персонально дать привилегию Кате, я назначаю ее, выбрав в дереве Katya. Вот и все администрирование (окно управления привилегиями в системе Allegro). Все привилегии раздаются от имени SYSDBA или OWNER-а базы. Юзеры друг другу у меня привилегии не предоставляют. Это также упрощает администрирование.  
 Вообще я убежден, что администрирование эффективно, только если оно легко и просто упраляется.


 
stud ©   (2006-03-20 17:50) [13]

kaif ©   (20.03.06 17:38) [12]
Преимущество такого подхода - централизованное управление ролями пользователей.

не совсем конечно понятно в чем здесь преимущество, т.е. если заставить пользователя явно укзать роль при подключении то о централизованом управлении ролями можно забыть???
что-то мне подсказывает что интерфейс управления ролями тут совсем не изменится, единственный минус (?) это дополнительный например листбокс выбора роли и при изменении роли пользователь должен знать как она называется. а процедура администрирования вроде как совсем совсем остается прежней


 
kaif ©   (2006-03-20 18:12) [14]

при изменении роли пользователь должен знать как она называется
А у меня - не должен.
Вот и вся разница.

Я не настаиваю на том, что мое решение - единственно приемлемое.
Если кому-то больше нравится сообщать юзеру его роль, изображать роли в выпадающих списках, сохранять эти списки в реестре или еще где-то, объяснять юзеру, куда делись роли в выпадающем списке после переустановки Windows и т.п. то флаг ему в руки.


 
kaif ©   (2006-03-20 18:14) [15]

Если интересно, как выглядит интерфейс:
http://www.gaapinvest.com/allegro/doc/book3/doc039.html


 
stud ©   (2006-03-20 18:19) [16]

kaif ©   (20.03.06 18:14) [15]
Если интересно, как выглядит интерфейс

душевно.
но в случае добавления пользователю еще одной роли?


 
kaif ©   (2006-03-20 18:45) [17]

2 stud ©   (20.03.06 18:19) [16]
Я уже сказал. Есть ограничение: у каждого юзера по одной роли.
Неужели я непонятно сказал?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.05.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.01 c
15-1145251261
miwa (forgot pw)
2006-04-17 09:21
2006.05.14
Логика программы для кассы и склада: нужны советы


4-1140527247
Стас
2006-02-21 16:07
2006.05.14
События от мыши


4-1140420446
Xerx
2006-02-20 10:27
2006.05.14
Нужен совет по использованию таймеров


8-1134761568
Expl
2005-12-16 22:32
2006.05.14
движение TLabel


2-1146142759
zorik
2006-04-27 16:59
2006.05.14
Никто не замечал что в DBGrid исчезает полоса прокрутки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский