|
|
|
Опять нужна помощь!
|
|||
|---|---|---|---|
|
#18+
!!6.5!! + VB6 (ADO) Имеется таблица с записями. Записи содержат коды отделов. Имеются юзеры этих отделов. Для каждого отдела существует группа, в которой обитают эти юзеры. Для каждой такой группы создан view (SELECT ... FROM таблица WHERE KodOtdela=....) для того чтобы юзер каждого отдела мог просмотреть записи, предназначенные только для его отдела. В клиенте нужно просматривать эти view. Используется доверительный коннект к серверу, т.е. учетные сведения NT. Так вот. Я хочу сделать, чтобы при загрузке клиента определять в какой группе находится юзер, и в зависимости от этого просматривать записи из view, соответствующего отделу, в котором обитает юзер. Имя группы образовано следующим образом: Otdel + KodOtdela. Например, юзеры из отдела с кодом 23 сидят в группе Otdel23 и я смогу определить что для них предназначен view23, а для юзеров отдела с кодом 45 существует группа Otdel45 и им уже нужно предоставлять результат view45. Был другой вариант. Иметь таблицу юзеров, в которой им сопоставлены коды отделов. И информацию какой view для определенной группы брать из этой таблицы. Но вариант с таблицей меня не устраивает, так как при добавлении юзера, необходимо не забывать добавлять запись в эту таблицу. Но, с другой стороны (если использовать группы), администрирование базы будет нераздельно от клиента, потому что если, например, создать группу, имя которой не подчиняется описанному правилу, и определить права, то юзер, посредством клиента ничего не увидит, хотя фактически права у него для просмотра определенного view будут установлены администратором (клиент не поймет какой view использовать). Короче говоря, мне необходимо из клиента выяснить в какой группе сидит юзер, запустивший клиента. В проекте я использую ADO, но не знаю как реализовать все вышеописанное его средствами. Приходится использовать еще и SQL-DMO. Получается, что клиент создает два отдельных соединения: одно для ADO, другое SQL-DMO (или их можно завязать как-нибудь между собой?). Можно ли сделать все средствами ADO? Если не трудно приведите пример. И вообще, существуют ли более удобные способы реализации моей задачи (разделение доступа для различных юзеров к записям (не колонкам!) таблицы? Причем надо учитывать, что, разумеется, со временем добавляются новые отделы и новые юзеры (для них тоже надо определять доступ к записям). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2002, 23:15:36 |
|
||
|
Опять нужна помощь!
|
|||
|---|---|---|---|
|
#18+
>Короче говоря, мне необходимо из клиента выяснить в какой >группе сидит юзер, запустивший клиента. В проекте я >использую ADO, но не знаю как реализовать все >вышеописанное его средствами. Для всех пользователей sp_helprolemember sp_helpsrvrolemember Для текущего пользователя IS_MEMBER() IS_SRVROLEMEMBER() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2002, 11:37:21 |
|
||
|
Опять нужна помощь!
|
|||
|---|---|---|---|
|
#18+
Если Вы еще только разрабатываете проект, то есть решение очень морочное с точки зрения разработчика, но достаточно надежное по безопасности. Доступ клиенам дается только на выполнение ХП. ХП пришутся на SELECT/INSERT/UPDATE/DELETE, внутри ХП проверяются права юзера на часть информации из таблиц и преставлений. НА ВСЕ ОСТАЛЬНОЕ КЛИЕНТ ПРАВ НЕ ИМЕЕТ. Недостатки понятны. Достоинства: у Вас full control по любым операциям > Приходится использовать еще и SQL-DMO. ADO - это доступ к данным, SQL-DMO доступ к административным функциям SQL Server. С одной стороны Вы клиента хотите ограничить, а с другой - он будет копаться на серваке? Ой, как бы опять речь не пошла о веревке и мыле :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2002, 15:20:56 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3466&tid=1822384]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 377ms |

| 0 / 0 |
