Вниз
Скачать: CL | DM;

Ограничение доступа к базе   Найти похожие ветки 

← →
dash78 ©   (2003-03-03 07:53) [0]

Здравствуйте всем.
Уважаемые мастера подскажите как ограничить доступ к отдельным записям в таблицах базы определенных пользователей и реализовать это в программе.
К примеру: главный бухгалтер имеет доступ к информации о сотрудниках только по своему отделу, начальник финансового отдела - по своему, начальник ОК - по всем отделам?


← →
Anatoly Podgoretsky ©   (2003-03-03 08:05) [1]

WHERE условия


← →
Alexandr ©   (2003-03-03 08:29) [2]

через view


← →
zacho ©   (2003-03-03 08:31) [3]

Например, так:
Есть таблица OTDEL с полем ID_OTDEL - ПК.
Создаем таблицу USERS_OTDEL с полями ID_USER varchar(макс. размер имени пользователя в IB), ID_OTDEL - FK на OTDEL.
Для доступа к таблице OTDEL используем только VIEW или SP примерно такого вида: SELECT bla-bla-bla, ... FROM OTDEL O JOIN USERS_OTDEL UO ON O.ID_OTDEL=UO.ID_OTDEL AND UO.ID_USER=USER
Естественно, это только в общих чертах.


← →
dash78 ©   (2003-03-03 09:20) [4]

2 Alexandr
создавать для каждого пользователя view??

2 zacho
сп
была такая же мысль

может у кого еще есть какие интересные идеи??


← →
passm ©   (2003-03-03 09:25) [5]

Обычно создаю пару просмотров на таблицы: все доступные записи с полем READONLY и привелегией только SELECT и просмотр с записями READONLY = "N" со всеми привелегиями и LOCAL CHECK OPTION.
Приблизительно по схеме:
CREATE TABLE USER_LIST
(USER_ID VARCHAR(32),
USER_NAME VARCHAR(64));

CREATE TABLE OTDEL_ACCESS
(USER_ID VARCHAR(32),
OTDEL_ID INTEGER,
READONLY CHARACTER(1) CHECK (READONLY IN ("Y", "N")),
CONSTRAINT OTDEL_ACCESS1 FOREIGN KEY (USER_ID) REFERENCES USER_LIST (USER_ID) ON DELETE CASCADE,
CONSTRAINT OTDEL_ACCESS2 FOREIGN KEY (OTDEL_ID) REFERENCES OTDEL_LIST(ID) ON DELETE CASCADE);

CREATE VIEW VIEW1 AS
SELECT T1.*, AC.READONLY
FROM TABLE1 T1
INNER JOIN OTDEL_ACCESS AC ON (T1.OTDEL_ID = AC.OTDEL_ID)
WHERE AC.USER_ID = USER;

GRANT SELECT ON VIEW1 TO USER MASHA;

CREATE VIEW VIEW1_E AS
SELECT T1.*
FROM TABLE1 T1
WHERE T1.OTDEL_ID IN (SELECT Q1.OTDEL_ID
FROM OTDEL_ACCESS Q1
WHERE Q1.USER_ID = USER
AND Q1.READONLY = "N")
WITH LOCAL CHECK OPTION;

GRANT SELECT, UPDATE, DELETE, INSERT ON VIEW1_E TO USER MASHA;


← →
dash78 ©   (2003-03-03 10:43) [6]

2 passm
сп
все доходчиво и понятно



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

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.989 c
1-64136
Softik
2003-03-10 06:06
2003.03.20
Как выгрузить корректно из памяти ОЛЕ-объект? ведь присвоение UnA


1-64161
nkrainev
2003-03-03 15:44
2003.03.20
CGI-Delphi


1-64111
Сергей
2003-03-10 21:28
2003.03.20
Таблица


1-64075
ДмирийК
2003-03-07 08:59
2003.03.20
Размер exe файла.


1-64201
Karros
2003-03-07 21:54
2003.03.20
Кто сделает меньше ?




   Наверх