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

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

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

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

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

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

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

' Проверяются явные разрешения:
Объект - tbICustomer
Разрешение - adRightRead
Dim cat As ADOX.Catalog
Set cat - New ADOX.Catalog
cat.ActiveConnection - CurrentProject.Connection
CanCurrentUserReadCustomersADOX - _
((cat.Users(strUser).GetPerm1ss1ons('tbICustomer', adPermObjTable) And adRightRead) - adRightRead)
Set cat - Nothing End Function
В этом примере использован метод GetPermissions объекта User. Аналогичный метод имеется и у объекта Group.
При необходимости выяснить, какими правами обладает текущий пользователь, можно воспользоваться встроенной функцией CurrentUser, возвращающей
350
Глава 8 • Защита приложений
имя данного пользователя. Именно так и поступает функция CanCurrentUserRead- CustomersADOX:
CanCurrentUserReadCustomersADDX - _
((cat.Users(CurrentUser()).GetPermi ss ions("tblCustomer". adPermObjTable) And adRightRead) - adRightRead)
Функции CanCurrentUserReadCustomersADOX и CanUserReadCustomersADOX возвращают информацию только о явных разрешениях пользователя. Однако не следует забывать, что кроме них у пользователя могут быть и неявные разрешения, унаследованные от тех групп, в которые он входит. Как вы помните, в DAO полный набор разрешений пользователя возвращает свойство А1 IPermissions. В ADOX, к сожалению, нет эквивалента этому свойству, поэтому для определения полного набора разрешений приходится проверять не только собственные разрешения пользователя, но и разрешения всех групп, в которые он входит.
Например, функция CanUserReadCustomersAD0X2 из модуля basSecurityExamples- AD0X, просматривая все разрешения пользователя (явные и неявные), выясняет, может ли он прочитать записи из таблицы tblCustomer (листинг 8.35).
Листинг 8.35
Function CanUserReadCustomersAD0X2(strUser As String) As Boolean ' Демонстрирует синтаксис ADDX для определения ' явных и неявных разрешений на таблицу. Эта функция ' сложнее аналогичной функции для DA0, поскольку в AD0X ' нет ничего похожего на свойство DAO А11 Permissions.
' Проверяются все разрешения:
Объект - tblCustomer Разрешение - adRightRead
Dim cat As ADOX.Catalog Dim usr As ADOX.User Dim grp As ADOX.Group Dim fPerm As Boolean
' Присваиваем переменной fPerm значение False fPerm - False
Set cat - New ADOX.Catalog cat.ActiveConnection - CurrentProject.Connection
Set usr - cat.Users(strUser)
' Проверяем явные разрешения пользователя. fPerm - ((usr.GetPermiss1ons(
"tblCustomer", adPermObjTable) _
And adRightRead) - adRightRead)
' Если права на чтение записей нет среди явных разрешений.
' следует проверить неявные.
If Not fPerm Then
For Each grp In usr.Groups
fPerm - C(grp.GetPerm1ss1ons( _
"tblCustomer", adPermObjTable) _
And adRightRead) - adRightRead)
If fPerm Then Exit For
Next End If
CanUserReadCustomersAD0X2 - fPerm
Управление защитой с помощью ADOX
351
Set usr - Nothing Set grp - Nothing Set cat - Nothing End Function
Функция CanUserReadCustomersAD0X2 начинает свою работу с того, что проверяет явные разрешения пользователя на таблицу tbICustomer. С этой целью она обращается к методу GetPermissions объекта User. Если у пользователя нет явного разрешения на чтение записей указанной таблицы, функция переходит к проверке разрешений групп, в которые входит этот пользователь. В цикле For она перебирает элементы коллекции Groups объекта User и, обнаружив разрешение adRightRead, выходит из цикла (с помощью оператора Exit For).
Запись разрешений с помощью ADOX
Для установки разрешений с применением ADOX предназначен метод SetPer- missions объекта User или Group. У данного метода имеется аргумент action, позволяющий определить один из нескольких возможных способов изменения разрешений. Допустимые значения этого аргумента перечислены в табл. 8.7.
Таблица 8.7. Константы, передаваемые методу ADOX SetPermissions посредством аргумента action
Константа Описание adAccessGrant Добавляет заданное разрешение или несколько разрешений к существующему набору adAccessSet Заменяет набор разрешений новым набором adAccessDeny Удаляет заданное разрешение или несколько разрешений из существующего набора adAccessRevoke Удаляет все разрешения на объект Ниже представлен оператор, который добавляет к существующему набору разрешений пользователя Geoff на таблицу tbl Menu право удалять из нее записи:
cat.Users("Geoff").SetPermissions "tblMenu". adPermObjTable. adAccessGrant. adRightDelete
А такой оператор, наоборот, лишает пользователя права на удаление записей из указанной таблицы:
cat.Users("Geoff").SetPermissions "tblMenu". adPermObjTable, adAccessDeny. adRightDelete
Следующая версия нашего оператора заменит набор разрешений пользователя Geoff единственным правом удалять записи из таблицы - никаких других разрешений на таблицу tbl Menu у него теперь не будет:
cat.Users("Geoff").SetPermissions "tblMenu". adPermObjTable, adAccessSet, adRightDelete
Рассмотрите процедуру SetUserReadCustomersADDX из модуля basSecurityExamples- ADOX (листинг 8.36), и вам станет ясно, как можно добавить или удалить разрешения на таблицу tbICustomer с помощью метода SetPermissions.
Предыдущая << 1 .. 137 138 139 140 141 142 < 143 > 144 145 146 147 148 149 .. 357 >> Следующая