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

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

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

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

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

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

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

Таблица 8.5. Константы DAO для работы с системой защиты (продолжение) Константа Описание dbSecWriteDef Можно модифицировать и удалять определение таблицы, включая информацию о столбцах и индексах dbSecRetrieveData Можно читать данные из объекта Document dbSecInsertData Можно добавлять записи dbSecReplaceData Можно модифицировать записи dbSecDeleteData Можно удалять записи dbSecDBAdmin Можно делать базу данных реплицируемой, менять ее пароль и настраивать загрузочные свойства dbSecDBCreate Можно создавать новые базы данных; используется только с объектом-кон- тейнером Databases в файле рабочей группы (SYSTEM.MDW) dbSecDBExdusrve Можно открывать базу данных в монопольном режиме dbSecDBOpen Можно открывать базу данных acSecMacExecute Можно выполнять макрос acSecMacReadDef Можно читать определение макроса acSecMacWriteDef Можно модифицировать определение макроса acSecFrmRptExecute Можно открывать форму или отчет acSecFrmRptReadDef Можно читать определение и модуль формы или отчета AcSecFrrnRptWriteDef Можно модифицировать определение модуля формы или отчета Чтение разрешений с помощью DAO
Для того чтобы прочесть разрешение на доступ к объекту с помощью DAO, нужно обратиться к свойству этого объекта Permissions или А1 IPermissions. Свойство Permissions возвращает только явные разрешения, тогда как А1 IPermissions - полный набор разрешений - и явных, и неявных. В обоих случаях информация возвращается в виде длинного целого, представляющего собой битовую карту соответствующего набора разрешений. Например, с помощью следующего оператора можно прочитать разрешения на таблицу tblOrder и сохранить полученное значение в переменной IngPermissions (предполагается, что объектной переменной db заранее присвоен указатель на объект Database):
1ngPermissions - db.Conta i ners!Tables.Documents!tbl Order.Permi ssi ons
Часто возникает необходимость выяснить, имеет ли пользователь определенные разрешения на объект. Это делается с применением битовой арифметики, поскольку Jet хранит каждое из разрешений в отдельном бите 4-байтового (длинного целого) значения. Чтобы проверить, установлены ли биты, соответствующие интересующему вас набору разрешений, достаточно посредством оператора And объединить полный набор разрешений с константой, в которой установлены только интересующие вас биты, а затем сравнить результат с этой же константой. Если они совпадут, значит, заданные разрешения имеются.
Предположим, что вы хотите узнать, сможет ли текущий пользователь добавлять записи в таблицу tbl Employee. Это делается так:
doc - db.Containers!ТаЫes.Documents!tblEmployee fOK - ((doc.Permissions And dbSecInsertData) - _ dbSecInsertData)
332
Глава 8 * Защита приложений
В данном примере переменной fOK будет присвоено значение Тrue, если объект Document имеет разрешение, определяемое константой dbSecInsertData, и значение False в противном случае.
Проверка разрешения с помощью констант
Существует еще один способ проверки разрешений, но его можно применить только в тех случаях, когда в константе, определяющей проверяемое разрешение, установлен только один бит: fOk - (doc.Permissions And dbSecInsertData) о 0
Если же в константе установлено большее число битов, данный метод не сработает. А поскольку большинство констант системы защиты содержат более одного бита, этим методом лучше не пользоваться.
Разрешения вовсе не обязательно проверять по одному. Сложив несколько констант с помощью битового оператора Or, можно проверить, есть ли у пользователя или группы некоторый набор разрешений. Так, следующий код проверяет, может ли пользователь читать, добавлять, обновлять и удалять записи таблицы tbl Employee:
doc - db.Containers!Tables.Documents!tblEmployee fOK - ((doc.Permissions And (dbSecRetrieveData Dr _ dbSecInsertData Or dbSecReplaceData Or dbSecDeleteData)) - _
(dbSecRetrieveData Or dbSecInsertData Or _ dbSecReplaceData Or dbSecDeleteData)
Функция CanCurrentUserReadCustomerDAO из модуля basSecurityExamplesDAO показывает, как определить, может ли текущий пользователь читать данные таблицы tbICustomer (листинг 8.13).
Листинг 8.13
Function CanCurrentUserReadCustomerDAOO As Boolean ' Демонстрирует синтаксис DAD для определения разрешений на таблицу, имеющихся у текущего пользователя.
1 Проверяются явные разрешения:
Пользователь - - Текущий пользователь - Объект - tbICustomer
Разрешение - dbSecRetrieveData
Dim db As DAO.Database Dim doc As DAO.Document
Set db - CurrentDbO
Set doc - db.Containers!Tables.Documents!tblCustomer
CanCurrentUserReadCustomerDAO - _
((doc.Permissions And dbSecRetrieveData)
- dbSecRetrieveData)
Set doc - Nothing Set db - Nothing End Function
Управление защитой с помощью РАО
333
Если у текущего пользователя имеется разрешение ReadData на таблицу tbl Cus - tomer, функция CanCurrentUserReadCustomerDAO возвращает значение True, в противном случае - значение False. Делает она это с помощью битовой маски разрешения (dbSecRetrieveData) и оператора And.
Функция CanCurrentUserReadCustomerDAO считывает разрешения текущего пользователя. Если вас интересуют разрешения другого пользователя (или группы), перед проверкой свойства Permissions присвойте его имя свойству UserName объекта Document. Как это делается, показано в листинге 8.14.
Предыдущая << 1 .. 130 131 132 133 134 135 < 136 > 137 138 139 140 141 142 .. 357 >> Следующая