Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.18;
Скачать: CL | DM;

Вниз

Управление доступом к базе данных InterBase   Найти похожие ветки 

 
Malder   (2002-02-17 18:50) [0]

Я тут недавно задавал впорос. Похоже меня не поняли. Обьясняю подробнее.
Есть база клиентов. Поля, допустим, такие:
Название фирмы клиента, телефон, факс, ИНН.

И еще есть дополнительое поле - Manager. В нем хранится имя Менеджера, который "ведет" данного клиента. Так вот.
Хотелось бы сделать так, чтобы под своим логином/паролем менеджер мог посмотреть ТОЛЬКО своих клиентов, то есть клиентов у которых поле Manager равно логину менеджера.


 
panov ©   (2002-02-17 19:39) [1]

Ну так все в твоих руках. Отфильтровывай только нужные записи...


 
drpass ©   (2002-02-17 20:57) [2]

>Malder
Да нет же, прочитай внимательней ветку - именно так и решается твоя задача


 
Malder   (2002-02-17 22:52) [3]

>drpass
К сожалению, я не понял.
Мне нужно, чтобы не клиентская часть ограничивала доступ по типу SELECT from Base Where Manager=Ivan, а сам сервер.
Иначе кто нибудь напишет программу, которая будет формировать SQL-запрос какой хочешь... и сервер выдаст нужную инфу...
я не поинмаю, как сделать ограничение именно со стороны сервера...


 
Malder   (2002-02-18 12:21) [4]

ответьте =)
Please


 
Reindeer Moss Eater   (2002-02-18 12:53) [5]

1.Не давай прав на таблицу никому
2.Сделай просмотр Select * from MyTable Where SomeFieldName = USER (Или как там в IB имя текущего юзера)
WITH CHECK OPTIONS
3.Дай гранты на просмотр


 
Malder   (2002-02-19 00:07) [6]

Народ. Я вообщем, не очень секу в клиент-серверном программировании. Пожалуйста, дайте ссылку, где хотя бы ясно про эти ГРАНТЫ написано...


 
Alexandr ©   (2002-02-19 08:17) [7]

документация


 
Potemkin ©   (2002-02-19 10:00) [8]

Малдер не хнычь, гранты это также как наличие пропуска на любое закрытое предприятие, простой рабочий никогда не попадет без разрешения в кабинет директора(экстрималов и придурков из списка исключаем) и никогда не примет вместо него решения, но а директор легко сделает на предприятии все что душе угодно, вобщем гранты это уровень допуска к какому либо объекту(в базах данных это таблицы, триггеры, домены, процедуры).
Сходи на сайт ib.demo.ru и посмотри там статьи по правам, там есть парочка(как минимум) на русском языке.
Во как я поумничал.


 
drpass ©   (2002-02-19 11:06) [9]

Это и делается на сервере:
например,
create view ivan_table(id, name, count) as select id, name, count from clients where manager="ivan";
- так ты создаешь представление, т.е., временную таблицу, являющуюся подмножеством таблицы clients. В этом представлении содержатся данные, положенные только для Ивана-менеджера.
grant select, insert on ivan_table to ivan_manager;
-так ты открываешь доступ к этому представлению только Ивану.
Такие представления делай для всех менеджеров, а доступ к таблице Clients вообще закрой для всех кроме тебя.


 
Ura   (2002-02-19 11:34) [10]

Еще вариант.
Все выборки из базы делай через хранимые процедуры. Где всегда на входе фигурировать будет имя menedgera.
Правда и здесь враги тоже могут подставлять имя менеджера, и в варианте с грантами - ТОЖЕ смогут подставлять имя менеджера...


 
Reindeer Moss Eater   (2002-02-19 12:10) [11]

Не слушай их.
Делать просмотры по количеству юзеров совсем не надо.
Сделай ОДИН просмотр,
...Where SomeField = UserName with CHECK OPTIONS
(не помню как в IB зовут функцию получения имени текущего юзера)
И все!


 
MetallAdm ©   (2002-02-19 13:31) [12]

есть такая вещь User_name()

тоесть показывает логин

можешь даже посмотреть
declare @ss varchar(20)
select @ss=user_name()

потом можешь сделать табличку с логинами тоесть
под номером 1 - менеджер 2.3.4....х

пример
id logins
----- ------------
1 manager
2 pupkin
... ....

а втой табличке где данные делаешь еще поле
с номерами тоесть если енто 1 то еге может видеть менеджер
или он может видеть все

я делал так !

и усе




 
Reindeer Moss Eater   (2002-02-19 14:36) [13]

Пробую в последний раз:
Имеем таблицу с полем ManagerName (имя пользователя кому можно смотреть эту запись)
Заполняем это поле в триггере на Insert: New.ManagerName = UserName()
Пишем далее:
1.Create View MyCoolView as Select * from ЭТА_ТАБЛИЦА
Wherer ManagerName = User_Name()

2.Grant All On MyCoolView To Public

Все!


 
Malder   (2002-02-19 18:07) [14]

Большое всем спасибо за ответы !



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

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
4-57576
scam
2002-01-18 03:31
2002.03.18
Как по хэндлу окна узнать имя и путь exe шника которому это окно принадлежит.


3-57336
undersun
2002-02-19 19:55
2002.03.18
Народ как узнать на клиенте MS-SQL что в записи в базе изменились


1-57392
AlexMey
2002-03-01 15:33
2002.03.18
Можно ли отчёт QReport экспортировать в Word?


1-57370
Aleksandr
2002-03-04 15:44
2002.03.18
Почему поток не возобновляется после паузы?


4-57553
Тупой Олень!
2002-01-16 12:50
2002.03.18
JPG