Поделиться через


Использование метода 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.
   }  
}

См. также

Основные понятия

Переопределение результатов проверки безопасности

Ссылки

Использование метода Deny

PermissionState

Другие ресурсы

Расширение метаданных с помощью атрибутов

Управление доступом для кода