Объекты PrincipalPermission
Обновлен: Ноябрь 2007
Модель безопасности на основе ролей поддерживает объект разрешения, схожий с объектами разрешения в модели управления доступом для кода. Этот объект PrincipalPermission представляет удостоверение и роль, которые определенный класс участников должен иметь для выполнения. Класс PrincipalPermission можно использовать как для принудительных, так и для декларативных проверок безопасности.
Чтобы реализовать класс PrincipalPermission принудительно, следует создать новый экземпляр класса и инициализировать его с именем и ролью, которую должны будут иметь пользователи для доступа к коду. Например, в следующем программном коде инициализируется экземпляр этого объекта с удостоверением "Joan" и ролью "Teller".
String id = "Joan";
String role = "Teller";
PrincipalPermission principalPerm = new PrincipalPermission(id, role);
Dim id As String = "Joan"
Dim role As String = "Teller"
Dim principalPerm As New PrincipalPermission(id, role)
Подобное разрешение можно создать декларативно с помощью класса PrincipalPermissionAttribute. В следующем фрагменте коде декларативно инициализируется удостоверение со значением "Joan" и роль со значением "Teller".
[PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Joan", Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Name := "Joan", Role := "Teller")>
Для успешного завершения проверки безопасности должны совпадать как заданное удостоверение, так и роль. Однако при создании объекта PrincipalPermission можно передать нулевую строку удостоверения, чтобы показать, что удостоверение участника может быть любым. Передача нулевой строки роли также показывает, что участник может быть членом любой роли (или не быть членом ни одной роли). Для декларативной безопасности аналогичный результат может быть получен, если опустить одно из двух свойств. Например, следующий код использует PrincipalPermissionAttribute, чтобы декларативно показать, что участник может иметь любое имя, но должен иметь роль "teller".
[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Role := "Teller")>