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

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

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

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

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

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

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

Листинг 8.14
Function CanUserReadCustomersDAOtstrUser As String) 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
doc.UserName - strUser
CanUserReadCustomersDAD - _
((doc.Permissions And dbSecRetrieveData)
- dbSecRetrieveData)
Set doc - Nothing Set db - Nothing End Function
ПРИМЕЧАНИЕ
Свойству UserName объекта Document можно присвоить имя любого пользователя или группы.
Две приведенные функции, CanCurrentUserReadCustomerDAO и CanUserReadCusto- mersDAO, проверяют только явные разрешения, для чего обе они используют свойство Permissions объекта Document. Если же вас интересует полный набор разрешений на объект, включая как явные разрешения, непосредственно присвоенные пользователю, так и неявные, полученные им благодаря своему членству в группах, вам нужно обратиться к свойству All Permissions: fDK - _
((doc.А11Permissions And dbSecConstant) - dbSecConstant)
Свойство АП Permissions имеется только в DAO - ADOX его не поддерживает. Как данное свойство можно применить, показывает функция, приведенная в листинге 8.15.
Листинг 8.15
Function CanUserReadCustomersDA02(strUser As String) As Boolean ' Демонстрирует синтаксис DAO для ' определения явных и неявных разрешений на ' таблицу с помощью свойства AllPermissions.
334
Глава 8 • Защита приложений
' Проверяет все разрешения на:
Объект - tbICustomer Разрешение - dbSecRetrieveData
Dim db As DAD.Database Dim doc As DAO.Document
Set db - CurrentDbO
Set doc - db.Containers!Tables.Documents!tblCustomer
doc.UserName - strUser
CanUserReadCustomersDA02 - _
((doc.AHPermlssions And dbSecRetrieveData) _
- dbSecRetrieveData)
Set doc - Nothing Set db - Nothing End Function
ПРИМЕЧАНИЕ
Свойство AllPermlssions доступно только для чтения. Его нельзя использовать с целью установки разрешений объекта Document.
Установка разрешений с помощью DAO
Установка разрешений на доступ к объекту не сложнее их считывания. Ее можно выполнить двумя способами:
О заменить существующий набор разрешений новым;
О добавить разрешения к существующему набору или удалить их из такового.
Для замены набора разрешений свойству Permissions просто присваивается новое значение. Например, чтобы заменить существующие разрешения для таблицы tbl Order, оставив пользователю только разрешение ModifyDesign, нужно выполнить такой код:
Set doc - db.Conta1ners!Tables.Documents!tblDrder doc.Permissions - dbSecWriteDef
Воспользовавшись оператором Or, вы можете установить сразу несколько разрешений. Так, приведенный далее код предоставляет пользователю разрешения ReadDesign и ReadData:
Set doc - db.Contai ners!Tables.Documents!tblOrder doc.Permissions - dbSecReadDef Or dbSecRetrieveData
При необходимости добавить разрешение к заданному набору следует применить оператор Or, объединяющий существующие разрешения с новым. Ниже представлен код, который добавляет к имеющемуся набору разрешений таблицы tbl Order разрешение ModifyDesign:
Set doc - db.Containers!Tables.Documents!tblDrder doc.Permissions - doc.Permissions Or dbSecWriteDef
Этот способ модификации разрешений в большинстве случаев предпочтительнее, поскольку оберегает вас от ненамеренного удаления уже имеющихся у пользователя разрешений. Если у пользователя есть, скажем, разрешение ReadData на таблицу tbl Order, приведенный выше код сохранит его.
Управление защитой с помощью РАО
335
Чтобы лишить пользователя конкретного разрешения, сохранив все остальные, нужно задействовать битовые операторы And и Not. Например, чтобы лишить его разрешения ModifyDesign на таблицу tbl Order, следует выполнить такой оператор:
doc.Permissions - doc.Permissions And Not dbSecWriteDef
Приведенная в листинге 8.16 процедура SetUserReadCustomersDAO из модуля basSecurityExamplesDAO добавляет или удаляет разрешение заданного пользователя на чтение данных из таблицы tbICustomer.
Листинг 8.16
Sub SetUserReadCustomersDAO(strUser As String. fRead As Boolean)
' Демонстрирует синтаксис DAD для
1 установки или удаления конкретного разрешения.
' Устанавливается разрешение:
Объект - tbICustomer Разрешение - dbSecRetrieveData
Dim db As DAO.Database Dim doc As DAO.Document
Set db - CurrentDbO
Set doc - db.Conta1ners!Tables.Documents!tblCustomer
doc.UserName - strUser
If fRead Then doc.Permissions - _
doc.Permissions Or dbSecRetrieveData
Else
doc.Permissions - _
doc.Permissions And Not dbSecRetrieveData
End If
Set doc - Nothing Set db - Nothing End Sub
Так, следующий вызов процедуры SetUserReadCustomersDAO предоставляет пользователю Anna разрешение ReadData:
Call SetUserReadCustomersDAO ("Anna", True)
А такой вызов лишает этого же разрешения пользователя Geoff:
Call SetUserReadCustomersDAO "Geoff", False
Предыдущая << 1 .. 131 132 133 134 135 136 < 137 > 138 139 140 141 142 143 .. 357 >> Следующая