Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Разработка корпоративных приложений в Access 2002 - Литвин П.

Литвин П. Разработка корпоративных приложений в Access 2002 — Спб.: Питер, 2002. — 848 c.
ISBN 5-314-00181-0
Скачать (прямая ссылка): razrabotkaprilojeniy2002.djvu
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 357 >> Следующая

Set usr - Nothing Set cat - Nothing End Sub
Программирование разрешений с помощью ADOX
Для управления разрешениями в ADOX используются методы объектов User и Group. Как и в DAO, разрешения, которые вы хотите установить или прочитать, задаются с помощью констант, описанных в табл. 8.6.
Таблица 8.6. Константа разрешений ADOX
Константа Описание adRightNone Нет доступа к объекту adRightFull Полный доступ к объекту; при использовании с контейнером Databases эта константа означает право делать базу данных реплицируемой, изменять ее пароль и устанавливать загрузочные свойства adRightDrop Можно удалить объект adRightReadPermlsslons Можно читать информацию объекта, связанную с защитой adRlghtWrltePermlsslons Можно изменять разрешения на доступ к объекту 348
Глава 8 • Защита приложений
Таблица 8.6. Константы разрешений ADOX (продолжение)
Константа
Описание
adRightExecute
adRightWithGrant
adRightExdusive
adRightlnsert
adRightUpdete
adRightDelete
adRightRead
adRightWrlteOwner
adRightCreate
adRightRead Design
adRightWriteDesIgn
Можно изменять значение свойства Owner
Можно создавать новые документы; при использовании с контейнером Databases или системной базой данных эта константа означает право создавать новые базы данных
Можно читать определение таблицы, в том числе информацию о столбцах и индексах
Можно модифицировать и удалять определение таблицы, в том числе информацию о столбцах и индексах
Можно читать записи; при использовании с контейнером Databases эта
константа означает право открывать базу данных
@TR = Можно добавлять записи
Можно модифицировать записи
Можно удалять записи
При использовании с контейнером Databases эта константа означает право открывать базу данных в монопольном режиме Можно выполнять объект, например запрос
Можно предоставлять другим пользователям право администрировать разрешения на объект
Чтение разрешений с помощью ADOX
Разрешения на объект, предоставленные пользователю или группе, в ADOX возвращает метод GetPermissions объекта User или Group. Применение этого метода аналогично использованию свойства Permissions в DAO. Метод GetPermissions возвращает длинное целое, представляющее собой битовую карту соответствующего набора разрешений для объекта. Так, следующий оператор считывает разрешения группы Users на таблицу tbICustomer и сохраняет их в переменной IngPerm.
IngPerm - _
cat.Groups("Users").GetPermi ssions("tbl Customer". adPermObjTable)
Методу GetPermissions передается имя объекта и константа, определяющая его тип. Подобно свойству Permissions из DAO, метод GetPermissions возвращает длинное целое (4 байта), содержащее полный набор разрешений на объект, в котором каждый бит (или несколько битов) соответствует одному конкретному разрешению. Очень часто возникает потребность выяснить, имеет ли пользователь какое-то определенное разрешение. В этом случае следует применить битовую арифметику: вы маскируете несколько битов с помощью оператора And и сравниваете результат с маской. В качестве масок можно использовать константы, перечисленные в табл. 8.6.
ПРИМЕЧАНИЕ
Константа adPermObjTable при вызове метода GetPermissions определяет тип объекта (задается для таблиц и для запросов).
Предположим, вам необходимо определить, имеют ли члены группы Drones право добавлять строки в таблицу tbl Employee. Это можно сделать так:
IngPerm - _
cat.Groups("Drones").GetPermi ssi ons("tblEmpl oyee".
Управление защитой с помощью ADOX
349
adPermObjTable)
fDK - ((IngPerm And adRightInsert) - adRightlnsert)
В результате выполнения этих операторов, если группа Drones имеет разрешение на добавление строк в таблицу tbl Empl oyee, переменной fOK будет присвоено значение True. В противном случае fOK получит значение False.
ВНИМАНИЕ
Поскольку некоторые разрешения могут означать установку нескольких битов, для проверки наличия у пользователя или группы конкретного разрешения не может быть использован следующий синтаксис: ЮК = ((IngPerm And adRightlnsert) о 0). В отдельных случаях (когда проверяемое разрешение определяется единственным битом) это сработает, но вообще такой способ проверки не дает корректного результата.
Разрешения можно проверять не только по одному, но и по нескольку сразу. Сложив ряд разрешений с помощью оператора Or, можно узнать, имеет ли пользователь или группа их заданный набор. Так, чтобы проверить, обладает ли Suzanne правом на чтение, добавление, обновление и удаление записей в таблице tbl Menu, следует выполнить такой код:
IngPerm - _
cat.UsersC'Suzanne ").GetPermissions("tblMenu ", adPermObjTable) fOK - ((IngPerm And (adRightRead Or adRightlnsert Or _ adRightUpdate Dr adRightDelete)) - _
(adRightRead Or adRightlnsert Dr adRightUpdate Dr adRightDelete))
В листинге 8.34 использована функция CanUserReadCustomersADOX из модуля basSecurityExamplesADOX. Если пользователь имеет право читать записи из таблицы tbICustomer, данная функция возвращает значение True, в противном случае - значение False.
Листинг 8.34
Function CanUserReadCustomersADOX(strUser As String) As Boolean ' Демонстрирует синтаксис ADOX для определения ' имеющихся у пользователя разрешений на таблицу.
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 357 >> Следующая