в статье посвященной SQL-ROLES
http://www.ibase.ru/devinfo/sqlroles.htm
описано следующее:
Распространенная ошибка: Часто встречается неправильное представление о механизме ролей, что после того как пользователю назначили роль, он сразу же получает все привилегии, выданные этой роли. Это неверно. Чтобы пользователь приобрел все привилегии, назначенные роли, он должен указать эту роль при подключении к базе данных. Если же пользователь при подключении не указал имя роли, то ему не будут доступны ни одна из привилегий этой роли.
Отсюда следует,чтобы применить соответствующую роль для входа ее необходимо указать явно! Соответственно, если пользователь укажет, например, при регистрации роль full_access он получет полный доступ, а если какую-то другую, то - другую!
Таким образом, возникают следующие вопросы:
1. В соответствии с вышеказанным, любой человек может применить любую роль, если к этому пользователю добавлена эта роль?
2. Каките права получает только что зарегистрированный пользователь ( Наверняка никакие, так как, если не прописаны никакие триггеры при добавлении пользователя на изменения прав доступа, то он вообще доступа не получит ни к одному элементу базы данных! ) ... или пользователя зарегистрированного без роли (наверняка только те права которые, явно прописаны для данного пользоателя)? Это так?
3. Как бы это так сделать, чтобы для пользователя сразу же применялась та единственная роль, которая прописана для этого пользователя!
4. Как можно отобразить роли примененные для указанного пользователя!
Автоматическое назначение ролей при входе
Модератор: kdv
ну и вопрос. что значит "любой ... может применить любую роль"?1. В соответствии с вышеказанным, любой человек может применить любую роль, если к этому пользователю добавлена эта роль?
пользователь может указать при коннекте только ту роль, в которую он включен. Только в этом случае он получит права
public + права выданные ему + права выданные роли.
мнэээ... какие "триггеры на изменения прав"???2. Каките права получает только что зарегистрированный пользователь ( Наверняка никакие, так как, если не прописаны никакие триггеры при добавлении пользователя на изменения прав доступа, то он вообще доступа не получит ни к одному элементу базы данных! ) ... или пользователя зарегистрированного без роли (наверняка только те права которые, явно прописаны для данного пользоателя)? Это так?
опять же, см. ту статью. пользователь имеет права:
выданные public
выданные этому пользователю
выданные роли, в которую этот пользователь включен, и если пользователь при коннекте указал эту роль.
1. включить пользователя в роль X3. Как бы это так сделать, чтобы для пользователя сразу же применялась та единственная роль, которая прописана для этого пользователя!
2. при логине пользователя указать роль X.
я не пойму - статья на китайском, что-ли?

нет "примененных" ролей. Есть роли, в которые пользователь ВКЛЮЧЕН. Все это есть в rdb$user_priviledges. включение в роль - M (membership).4. Как можно отобразить роли примененные для указанного пользователя!
"примененная" роль - это с которой пользователь вошел. ее значение в переменной CURRENT_ROLE.
3.Вопрос в том, что конкретному пользователю определить одну конкретную роль и активировать права этой роли без его четкого определения!
Рассмотрим пример:
пускай существуют роли с четко организованными правами: admin, reader, writer!
необходимо определить для каждого пользователя одну роль!
В начале работы клиентского приложения, требует Логин и пароль!
При авторизации применяются права для роли, без ее указания!
Как это лучше всего осуществить(т.к. по умолчанию без указания роли они не применяются)?
4. В административном модуле необходимо указывать в табличке (Логин ФИО, роль)!
Где брать Эту самую роль?
в rdb$user_priviledges?
Как вы относитесь к тому, чтобы брать ччасть информации через TIBSecurityService а роли из rdb$user_priviledges?
Рассмотрим пример:
пускай существуют роли с четко организованными правами: admin, reader, writer!
необходимо определить для каждого пользователя одну роль!
В начале работы клиентского приложения, требует Логин и пароль!
При авторизации применяются права для роли, без ее указания!
Как это лучше всего осуществить(т.к. по умолчанию без указания роли они не применяются)?
4. В административном модуле необходимо указывать в табличке (Логин ФИО, роль)!
Где брать Эту самую роль?
в rdb$user_priviledges?
Как вы относитесь к тому, чтобы брать ччасть информации через TIBSecurityService а роли из rdb$user_priviledges?
НИКАК. В статье что, неясно написано, что при логине пользователь ОБЯЗАН указывать роль?3.Вопрос в том, что конкретному пользователю определить одну конкретную роль и активировать права этой роли без его четкого определения!
я к этому никак не отношусь, потому что через TIBSecurityServices НЕЛЬЗЯ НИКАК получить данные из rdb$user_priviledges.. В административном модуле необходимо указывать в табличке (Логин ФИО, роль)!
Где брать Эту самую роль?
в rdb$user_priviledges?
Как вы относитесь к тому, чтобы брать ччасть информации через TIBSecurityService а роли из rdb$user_priviledges?
Из rdb$user_privileges можно получить данные путем банального селекта.
Если уж и до сих пор непонятно, то описываю по буквам:
1. пользователь логинится (логин и пароль)
2. приложение вычитывает его роль из rdb$privileges
3. приложение делает дисконнект, и повторный коннект
с именем пользователя, паролем, и полученной ролью
Еще что-нибудь надо объяснить?

Да конечно понятно! ,) Просто я спрашивал, как это можно обойти. и как я понял строки:В статье что, неясно написано, что при логине пользователь ОБЯЗАН указывать роль?
и есть ответ на мой вопрос! Спасибо![/quote][/i]1. пользователь логинится (логин и пароль)
2. приложение вычитывает его роль из rdb$privileges
3. приложение делает дисконнект, и повторный коннект
с именем пользователя, паролем, и полученной ролью