Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Управление доступом к базе данных 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
3-57297
draculenok
2002-02-19 07:49
2002.03.18
Кто-нибудь.....


14-57498
panov
2002-01-22 22:14
2002.03.18
О языке. О русском. Мозги набекрень от вопросов.


1-57388
UEDA
2002-03-01 16:59
2002.03.18
Инсталяция


4-57560
andersen
2002-01-15 21:40
2002.03.18
Как узнать в Интернете я или нет?


3-57295
Андре
2002-02-18 17:33
2002.03.18
Хранилище документов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский