Разрешение принципала Безопасность на основе ролей управляется классом PrincipalPermission. Пример под тем же названием проверяет с помощью этого класса, что личность пользователя, под которой запускается программа, — это Administrator (Администратор). Мы это делаем, передавая конструктору имя личности и строку, представляющую роль. И снова для разрешения мы применяем метод Demand (Требование), чтобы проверить законность запроса на разрешение. // Требовать, чтобы код выполнял
Администратор
Если программу запустил администратор, то требование успешно удовлетворяется. В противном случае оно не удовлетворяется и запускается исключение. Затем код проверяет, является ли именем пользователя JaneAdmin (это имя не системного администратора, и оно всего лишь входит в группу Customer Admin), и что указанная роль выполняет программу. String *customerAdminRole = // Строка "HPDESKTOP\\CustomerAdmin";
В базовом классе CodeAccessPermission
имеются методы создания разрешений,
представляющих собой объединение или
пересечение нескольких разрешений. Класс
PrincipalPermission не является производным от
CodeAccessPermission, потому что он работает на
основе личности, связанной с кодом, а не с
правами на код. Но как бы там ни было, он
использует те же идиомы, что и классы,
производные от CodeAccessPermission.
String *idl = "HPDESKTOP\\Administrator"; //
Администратор String *id2 = "HPDESKTOP\\PeterT"; //
Строка
Затем код смотрит, запущен ли он личностью любого из администраторов. Principal-Permission *pp3 =
Когда пользователи не аутентифицированы, то даже если они действительно принадлежат соответствующим ролям, выполнение Demand (Требование) все равно будет неудачным. |