Декларативная безопасность
Декларативный синтаксис безопасности использует атрибуты для размещения информации о безопасности в метаданных кода. Атрибуты могут быть указаны на уровне сборки, класса или члена для указания типа запроса, требования или переопределения, которые необходимо использовать. Запросы используются в приложениях, нацеленных на среду CLR, для информирования системы безопасности среды выполнения о разрешениях, которые необходимы или не нужны вашему приложению. Требования и переопределения используются в библиотеках для обеспечения защиты ресурсов от вызывающих объектов или переопределения стандартного поведения системы безопасности.
Примечание |
---|
В версии .NET Framework 4 произошли серьезные изменения в терминологии и модели безопасности .NET Framework.Дополнительные сведения об этих изменениях см. в разделе Изменения системы безопасности в платформе .NET Framework 4. |
Чтобы использовать декларативные вызовы безопасности, необходимо инициализировать данные состояния объекта разрешения таким образом, чтобы они предоставляли определенную форму необходимого разрешения. Каждое встроенное разрешение имеет атрибут, которому передается перечисление SecurityAction для описания типа операции безопасности, которую необходимо выполнить. Однако разрешения также принимают собственные параметры, являющиеся для них исключительными. Полное описание параметров, относящихся к разрешениям, см. в разделе, посвященном встроенным разрешениям.
В следующем фрагменте кода иллюстрируется использование декларативного синтаксиса для осуществления запроса на наличие у вызывающих объектов кода пользовательского разрешения, называемого MyPermission. Это разрешение — гипотетическое, его не существует в .NET Framework. В данном примере декларативный вызов помещен непосредственно перед определением класса, указывая, что данное разрешение применяется на уровне класса. Атрибуту передается структура SecurityAction.Demand для указания того, что вызывающие объекты должны обладать этим разрешением, чтобы выполняться.
<MyPermission(SecurityAction.Demand, Unrestricted = True)> Public Class MyClass1
Public Sub New()
'The constructor is protected by the security call.
End Sub
Public Sub MyMethod()
'This method is protected by the security call.
End Sub
Public Sub YourMethod()
'This method is protected by the security call.
End Sub
End Class
[MyPermission(SecurityAction.Demand, Unrestricted = true)]
public class MyClass
{
public MyClass()
{
//The constructor is protected by the security call.
}
public void MyMethod()
{
//This method is protected by the security call.
}
public void YourMethod()
{
//This method is protected by the security call.
}
}
См. также
Ссылки
Основные понятия
Расширение метаданных с помощью атрибутов