Текущий архив: 2004.08.01;
Скачать: CL | DM;
Внизпрограммное добавление юзеров и прав Найти похожие ветки
← →
stud © (2004-07-07 15:46) [0]пытаюсь добавить юзера с указанием роли. юзер добавляется но не является членом роли. использую ibsecurityservice.
data.userservice.Active:=true;
data.userservice.UserName:=trim(useredit.Text);
data.userservice.Password:=pass.Text;
data.userservice.SQlRole:=ansiuppercase(role[roleedit.itemindex]);
data.userservice.AddUser;
в чем засада?
← →
Johnmen © (2004-07-07 15:59) [1]А хто её знает...
Не проще ли просто выполнить пару запросов ?
← →
stud © (2004-07-07 16:02) [2]придется
← →
Johnmen © (2004-07-07 16:15) [3]Что-то я прогнал...:)
Создать юзера можно только вызвав апишную функцию.
← →
Соловьев © (2004-07-07 16:19) [4]
> data.userservice.SQlRole:=ansiuppercase(role[roleedit.itemindex]);
это не та роль. Выписка из хелпа:
...
The role name used to connect to the isc4.gdb security database.
← →
Соловьев © (2004-07-07 16:21) [5]думаю создать пользователя а потом уже с помощью запросов дать привелегии.
← →
stud © (2004-07-07 16:26) [6]вот блин
property SQLRole: String;
C++ syntax:
__property AnsiString SQlRole = {read=FSQLRole, write=FSQLRole};
Use SQLRole to set or return role name used to connect to the isc4.gdb security database.
а как это понимать?
← →
y-soft © (2004-07-07 16:40) [7]Кхм... А разве роли не пишутся непосредственно в рабочие базы посредством обычного вызова SQL CREATE ROLE (пишется в RDB$ROLES), GRANT, REVOKE (RDB$USER_PRIVILEGES) и относятся только к этим базам? При этом даже не проверяется, существует ли пользователь...
А т.к. ISC4.GDB такая же база, как и все другие, то и для нее можно назначать роли и привилегии (но не рекомендуется)...
Можно даже работать прямо с таблицами ISC4.GDB безо всякого IBAPI, даже новых пользователей добавлять :)
← →
stud © (2004-07-07 17:01) [8]
> y-soft ©
при желании можно и напрямую писать в файл isc4.gdb как в текстовый. ))))
вопрос не в этом
← →
y-soft © (2004-07-07 17:06) [9]>stud © (07.07.04 17:01) [8]
вопрос не в этом
Ну а в чем же тогда? Из сервиса назначать роли не получится. Только непосредственно в рабочие базы. Можно и до регистрации нового пользователя. О причинах я уже говорил в [7]
← →
stud © (2004-07-07 17:15) [10]
> Из сервиса назначать роли не получится
это я уже слышал((
проблема в том, что юзер, который будет заводить пользователей и раздавать права не является sysdba и придется переподключаться к базе для выполнения этих операций после чего опять входить под этим юзером. а так запустил сервис от имени админа и все..... но не тут-то было..
← →
y-soft © (2004-07-07 17:26) [11]>stud © (07.07.04 17:15) [10]
Вообще IMHO система раздачи прав и авторизации в IB очень далека от идеала. Какая-то половинчатая. Для моих задач было бы гораздо удобней, если бы все - и пользователи, и права - хранились в рабочих базах. И никаких всемогущих SYSDBA и смены владельца после Restore! :)
В FireBird 2.0 такое грозились сделать...
← →
stud © (2004-07-07 17:27) [12]будем ждать))))
← →
y-soft © (2004-07-07 17:32) [13]>stud © (07.07.04 17:27) [12]
А чем Вам не нравится напрямую регистрировать пользователей в ISC4.GDB (или ее аналогов)? А то иначе никто, кроме SYSDBA этого сделать не может. Надо только заранее дать права на запись и модификацию таблицы USERS уполномоченному пользователю.
Алгоритм создания пароля (DESX) тоже известен...
Способ, конечно, крайне не рекомендуемый, но иногда - единственно возможный...
← →
stud © (2004-07-07 17:35) [14]ну варианты с использованием sql есть, но както "неоптимально"(с)
← →
BanderLog_t (2004-07-08 06:32) [15]> stud © (07.07.04 17:15) [10]
А вот это ты зря так думаешь, этот пользователь должен просто навсего иметь права на выдачу этих ролей что как говорил
>y-soft © (07.07.04 16:40) [7]
делается посредством grand с указанием опции with admin option
← →
stud © (2004-07-08 09:12) [16]
> BanderLog_t
если ролей штук 10 и возможно их дальнейшее увеличение, так этот юзер должен быть членом всех этих ролей а права у каждой роли свои и этому юзеру не нужно иметь прав больше чем он уже имеет, зачем это нужно?? если бы все было так просто)))
← →
BanderLog_t (2004-07-08 11:44) [17]Ты назвал админа - юзером? :)
В итоге ты хочешь дать пользователю право на раздачу прав и ничего другого (грубо говоря)? Тогда что же ему помешает выдать самому себе остальные права? :) Вводить дополнительные проверки? И работать в итоге напрямую с системными таблицами. :)
← →
stud © (2004-07-08 12:34) [18]админ базы это я)) мне не надо ничего давать, я и сам возьму))
чтобы не заниматься ерундой раздавая права различным пользователям, хочу эту функцию передать руководителю отделения. но он не является админом. он обычный юзер со своими правами.
выдать себе остальные права он не сможет. т.к. пользователь может быть членом только одной группы
Страницы: 1 вся ветка
Текущий архив: 2004.08.01;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.036 c