WebPermission Класс

Определение

Внимание!

Code Access Security is not supported or honored by the runtime.

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

public ref class WebPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class WebPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class WebPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class WebPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type WebPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type WebPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type WebPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class WebPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Наследование
Атрибуты
Реализации

Примеры

В следующем примере показано, как создать новый экземпляр с WebPermission помощью Regex. Дополнительные узлы добавляются в список WebPermissionподключения и принятия . Наконец, список подключения и принятия отображается в консоли.

//  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
Regex^ myRegex = gcnew Regex( "http://www\\.contoso\\.com/.*" );

// Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
WebPermission^ myWebPermission = gcnew WebPermission( NetworkAccess::Connect,myRegex );

//Add connect privileges for a www.adventure-works.com.
myWebPermission->AddPermission( NetworkAccess::Connect, "http://www.adventure-works.com" );

//Add accept privileges for www.alpineskihouse.com.
myWebPermission->AddPermission( NetworkAccess::Accept, "http://www.alpineskihouse.com/" );

// Check whether all callers higher in the call stack have been granted the permission.
myWebPermission->Demand();

// Get all the URIs with Connect permission.
IEnumerator^ myConnectEnum = myWebPermission->ConnectList;
Console::WriteLine( "\nThe 'URIs' with 'Connect' permission are :\n" );
while ( myConnectEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myConnectEnum->Current );
}

// Get all the URIs with Accept permission.   
IEnumerator^ myAcceptEnum = myWebPermission->AcceptList;
Console::WriteLine( "\n\nThe 'URIs' with 'Accept' permission is :\n" );

while ( myAcceptEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myAcceptEnum->Current );
}

   //  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
   Regex myRegex = new Regex(@"http://www\.contoso\.com/.*");

   // Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
   WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect,myRegex);
   
   //Add connect privileges for a www.adventure-works.com.
   myWebPermission.AddPermission(NetworkAccess.Connect,"http://www.adventure-works.com");
   
   //Add accept privileges for www.alpineskihouse.com.
   myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/");
   
   // Check whether all callers higher in the call stack have been granted the permission.
   myWebPermission.Demand();
   
   // Get all the URIs with Connect permission.
   IEnumerator myConnectEnum = myWebPermission.ConnectList;
   Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
   while (myConnectEnum.MoveNext())
   {Console.WriteLine("\t" + myConnectEnum.Current);}

   // Get all the URIs with Accept permission.	  
   IEnumerator myAcceptEnum = myWebPermission.AcceptList;
   Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");
     
   while (myAcceptEnum.MoveNext())
     {Console.WriteLine("\t" + myAcceptEnum.Current);}
  ' Create a Regex that accepts all the URLs contianing the host fragment www.contoso.com.
  Dim myRegex As New Regex("http://www\.contoso\.com/.*")
    
  ' Create a WebPermission that gives permission to all the hosts containing same host fragment.
  Dim myWebPermission As New WebPermission(NetworkAccess.Connect, myRegex)
  ' Add connect privileges for a www.adventure-works.com.
  myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com")
  ' Add accept privileges for www.alpineskihouse.com.
  myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/")
  ' Check whether all callers higher in the call stack have been granted the permission.
  myWebPermission.Demand()
    
  ' Get all the URIs with Connect permission.
  Dim myConnectEnum As IEnumerator = myWebPermission.ConnectList
  Console.WriteLine(ControlChars.NewLine + "The 'URIs' with 'Connect' permission are :" + ControlChars.NewLine)
  While myConnectEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myConnectEnum.Current.ToString()))
  End While 
  
  ' Get all the URIs with Accept permission.	  
  Dim myAcceptEnum As IEnumerator = myWebPermission.AcceptList
  Console.WriteLine(ControlChars.NewLine + ControlChars.NewLine + "The 'URIs' with 'Accept' permission is :" + ControlChars.NewLine)

  While myAcceptEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myAcceptEnum.Current))
  End While

Комментарии

Внимание!

Безопасность доступа к коду (CAS) не рекомендуется использовать во всех версиях платформа .NET Framework и .NET. В последних версиях .NET заметки CAS не учитываются и при использовании API, связанных с CAS, возникают ошибки. Разработчикам следует искать альтернативные средства для выполнения задач безопасности.

WebPermission предоставляет набор методов и свойств для управления доступом к интернет-ресурсам. Вы можете использовать для предоставления ограниченного WebPermission или неограниченного доступа к ресурсу на основе , заданного PermissionStateWebPermission при создании .

Создайте экземпляр, WebPermission вызвав его конструктор с помощью одного из следующих наборов параметров:

  • Нет параметров. По умолчанию PermissionState является None.

  • Объект PermissionState. Укажите либо Unrestricted , чтобы разрешить использование любого URI в целевом классе, либо None разрешить доступ только к URI, указанным с помощью AddPermission метода .

  • Значение NetworkAccess и строка URI. Указанный URI имеет разрешения, предоставляемые значением NetworkAccess .

  • Описатель NetworkAccess и регулярное выражение URI.

AcceptList И ConnectList удерживают URI, для которых вы предоставили разрешение на доступ. Чтобы добавить URI в любой из этих списков, используйте .AddPermission Если вы передаете Accept в NetworkAccess качестве параметра, универсальный код ресурса (URI) будет добавлен в AcceptList. WebPermission разрешает подключения к целевому классу с URI, соответствующими AcceptList.

Внимание!

Чтобы запретить доступ к интернет-ресурсу, необходимо запретить доступ ко всем возможным путям к нему. Для этого требуется вызвать WebPermission.WebPermission с параметром состояния , для параметра задано значение Deny. Лучший подход — разрешить доступ только к определенному ресурсу. Дополнительные сведения об этом вопросе см. в разделе Использование метода Deny .

Примечание

Необходимо запретить доступ, используя только канонический путь к ресурсу. Нет необходимости использовать все синтаксические варианты пути.

Примечание

Имя пользователя и сведения о порте по умолчанию удаляются из Uri перед сравнением с аргументом регулярного выражения, предоставленным конструктору WebPermission(NetworkAccess, Regex) . Если регулярное выражение содержит сведения о пользователе или номер порта по умолчанию, все входящие Uriвыражения не будут соответствовать регулярному выражению.

Конструкторы

WebPermission()
Устаревшие..

Создает новый экземпляр класса WebPermission.

WebPermission(NetworkAccess, Regex)
Устаревшие..

Инициализирует новый экземпляр класса WebPermission с указанными правами доступа для заданного регулярного выражения URI.

WebPermission(NetworkAccess, String)
Устаревшие..

Инициализирует новый экземпляр класса WebPermission с указанными правами доступа для заданного URI.

WebPermission(PermissionState)
Устаревшие..

Создает новый экземпляр класса WebPermission, который передает или отклоняет все запросы.

Свойства

AcceptList
Устаревшие..

Это свойство возвращает перечисление отдельных разрешений на доступ, хранящихся в данном объекте WebPermission. Возможными типами объектов, содержащихся в возвращаемом перечислении, являются String и Regex.

ConnectList
Устаревшие..

Это свойство возвращает перечисление отдельных разрешений на подключение, хранящихся в данном WebPermission. Возможными типами объектов, содержащихся в возвращаемом перечислении, являются String и Regex.

Методы

AddPermission(NetworkAccess, Regex)
Устаревшие..

Добавляет в текущий объект WebPermission заданный URI с заданными правами доступа.

AddPermission(NetworkAccess, String)
Устаревшие..

Добавляет в текущий объект WebPermission заданную строку URI с заданными правами доступа.

Assert()
Устаревшие..

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу. Assert() может вызвать проблемы системы безопасности.

(Унаследовано от CodeAccessPermission)
Copy()
Устаревшие..

Создает копию WebPermission.

Demand()
Устаревшие..

Принудительно создает SecurityException во время выполнения, если все вызывающие методы, расположенные выше в стеке вызовов, не получили разрешения, указанного текущим экземпляром.

(Унаследовано от CodeAccessPermission)
Deny()
Устаревшие..
Устаревшие..

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа к ресурсу, указанному текущим экземпляром.

(Унаследовано от CodeAccessPermission)
Equals(Object)
Устаревшие..

Определяет, равен ли заданный объект CodeAccessPermission текущему объекту CodeAccessPermission.

(Унаследовано от CodeAccessPermission)
FromXml(SecurityElement)
Устаревшие..

Восстанавливает WebPermission из XML-представления.

GetHashCode()
Устаревшие..

Возвращает хэш-код для объекта CodeAccessPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.

(Унаследовано от CodeAccessPermission)
GetType()
Устаревшие..

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Intersect(IPermission)
Устаревшие..

Возвращает логическое пересечение двух экземпляров WebPermission.

IsSubsetOf(IPermission)
Устаревшие..

Определяет, является ли текущее WebPermission подмножеством заданного объекта.

IsUnrestricted()
Устаревшие..

Проверяет полное состояние разрешения для WebPermission.

MemberwiseClone()
Устаревшие..

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
PermitOnly()
Устаревшие..

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа ко всем ресурсам, за исключением ресурса, указанного текущим экземпляром.

(Унаследовано от CodeAccessPermission)
ToString()
Устаревшие..

Создает и возвращает строковое представление текущего объекта разрешения.

(Унаследовано от CodeAccessPermission)
ToXml()
Устаревшие..

Создает кодировку XML для WebPermission и его текущего состояния.

Union(IPermission)
Устаревшие..

Возвращает логическое объединение между двумя экземплярами класса WebPermission.

Применяется к

См. также раздел