Использование метода PermitOnly
Обновлен: Ноябрь 2007
Результат вызова PermitOnly полностью аналогичен результату вызова Deny, но является альтернативным способом указания условий, при которых проверка безопасности должна завершиться неудачей. Вместо указания на невозможность доступа к указанному ресурсу, как в случае с методом Deny, метод PermitOnly указывает на возможность доступа только к указанным ресурсам. Таким образом, вызов PermitOnly для разрешения X аналогичен вызову Deny для всех разрешений, кроме X. Если вызывается метод PermitOnly, код может использоваться для осуществления доступа только к ресурсам, защищенным разрешениями, указываемыми при вызове PermitOnly. Метод PermitOnly следует использовать вместо Deny в случаях, когда удобнее описать ресурсы, к которым можно осуществлять доступ, чем ресурсы, доступ к которым невозможен.
Если код вызывает метод PermitOnly для разрешения P1, и вызываемые объекты затем требуют разрешения P2, вызов PermitOnly влияет на результат проверки стека только в том случае, если P1 и P2 — разного типа и P2 не является подмножеством P1.
Следующие примеры демонстрируют декларативный синтаксис переопределения проверок безопасности с использованием метода PermitOnly. Вызывающие объекты не могут использовать этот код для доступа к любым защищенным ресурсам, кроме ресурсов пользовательского интерфейса. .
Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
Public Sub New()
End Sub
<UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted := True)> Public Sub
ReadRegistry()
'Access a UI resource.
End Sub
End Class
using System;
using System.Security.Permissions;
public class MyClass
{
public MyClass() {
}
[UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted=true)]
public void ReadRegistry() {
//Access a UI resource.
}
}
В следующем примере кода демонстрируется явный синтаксис переопределения проверок безопасности с использованием метода PermitOnly. Конструктору UIPermission передается объект PermissionState, определяющий ресурсы пользовательского интерфейса, к которым будет предоставлен доступ. После вызова метода PermitOnly код и все его вызывающие объекты могут использоваться только для доступа к ресурсам пользовательского интерфейса.
Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
Public Sub New()
End Sub
Public Sub ReadRegistry()
Dim MyPermission As New UIPermission(PermissionState.Unrestricted)
MyPermission.PermitOnly()
'Access a UI resource.
End Sub
End Class
using System;
using System.Security.Permissions;
public class MyClass {
public MyClass() {
}
public void ReadRegistry() {
UIPermission MyPermission = new UIPermission(PermissionState.Unrestricted);
MyPermission.PermitOnly();
//Access a UI resource.
}
}
См. также
Основные понятия
Переопределение результатов проверки безопасности