WebPermission Класс

Определение

Управляет правами доступа к интернет-ресурсам HTTP.Controls rights to access HTTP Internet resources.

public ref class WebPermission sealed : 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
Public NotInheritable Class WebPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Наследование
Атрибуты
Реализации

Примеры

В следующем примере показано, как создать новый экземпляр WebPermission с помощью Regex.The following example demonstrates how to create a new instance of WebPermission using a Regex. Дополнительные узлы добавляются в список подключения и принятия WebPermission.Additional hosts are added to the connect and accept list of WebPermission. Наконец, список подключения и принятия отображается в консоли.Finally, the connect and accept list are displayed to the console.

//  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

Комментарии

WebPermission предоставляет набор методов и свойств для управления доступом к ресурсам Интернета.WebPermission provides a set of methods and properties to control access to Internet resources. Вы можете использовать WebPermission, чтобы предоставить ограниченный или неограниченный доступ к ресурсу на основе PermissionState, заданной при создании WebPermission.You can use a WebPermission to provide either restricted or unrestricted access to your resource, based on the PermissionState that is set when the WebPermission is created.

Создайте экземпляр WebPermission, вызвав его конструктор, используя один из следующих наборов параметров:Create a WebPermission instance by calling its constructor using one of the following sets of parameters:

  • Нет параметров.No parameters. По умолчанию объект PermissionState имеет значение None.The default PermissionState is None.

  • Объект PermissionState.A PermissionState. Укажите либо Unrestricted, чтобы разрешить использование любого URI в целевом классе, либо None, чтобы разрешить доступ только к URI, указанным с помощью метода AddPermission.Specify either Unrestricted to allow any URI to be used in the target class, or None to allow access only to URIs that you specify through the use of the AddPermission method.

  • Значение NetworkAccess и строка URI.A NetworkAccess value and a URI string. Указанный URI имеет разрешения, предоставленные значением NetworkAccess.The specified URI has permissions granted by the NetworkAccess value.

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

ConnectList и AcceptList содержат универсальные коды ресурсов (URI), которым предоставлено разрешение на доступ.The ConnectList and AcceptList hold the URIs to which you have granted access permission. Чтобы добавить URI в любой из этих списков, используйте AddPermission.To add a URI to either of these lists, use AddPermission. Если передать Accept в качестве параметра NetworkAccess, универсальный код ресурса (URI) будет добавлен в AcceptList.If you pass Accept as the NetworkAccess parameter, the URI will be added to the AcceptList. WebPermission разрешит подключения к целевому классу с URI, соответствующими AcceptList.WebPermission will allow connections to your target class with URIs matching the AcceptList.

Внимание!

Чтобы запретить доступ к Интернет ресурсу, необходимо запретить доступ ко всем возможным путям к этому ресурсу.To deny access to an Internet resource, you must deny access to all the possible paths to that resource. Для этого требуется вызов WebPermission.WebPermission с параметром State, имеющим значение Deny.This requires calling WebPermission.WebPermission with state parameter set to Deny. Лучшим подходом является предоставление доступа только к конкретному ресурсу.A better approach is to allow access to the specific resource only. Дополнительные сведения об этой теме см. в разделе использование метода Deny .For more information about this subject, refer to the Using the Deny Method topic.

Примечание

Необходимо запретить доступ, используя только канонический путь к ресурсу.You need to deny access using only the resource canonical path. Нет необходимости использовать все синтаксические варианты пути.There is no need to use all the path's syntactical variations.

Примечание

Сведения о имени пользователя и порте по умолчанию удаляются из Uri перед сравнением с аргументом регулярного выражения, который предоставляется конструктору WebPermission(NetworkAccess, Regex).User name and default port information is stripped from the Uri before the comparison with the regular expression argument that is supplied to the WebPermission(NetworkAccess, Regex) constructor. Если регулярное выражение содержит сведения о пользователе или номер порта по умолчанию, то все входящие Uris не будут соответствовать регулярному выражению.If the regular expression contains user information or the default port number, then all incoming Uris will fail to match the regular expression.

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

WebPermission()

Создает новый экземпляр класса WebPermission.Creates a new instance of the WebPermission class.

WebPermission(NetworkAccess, Regex)

Инициализирует новый экземпляр класса WebPermission с указанными правами доступа для заданного регулярного выражения URI.Initializes a new instance of the WebPermission class with the specified access rights for the specified URI regular expression.

WebPermission(NetworkAccess, String)

Инициализирует новый экземпляр класса WebPermission с указанными правами доступа для заданного URI.Initializes a new instance of the WebPermission class with the specified access rights for the specified URI.

WebPermission(PermissionState)

Создает новый экземпляр класса WebPermission, который передает или отклоняет все запросы.Creates a new instance of the WebPermission class that passes all demands or fails all demands.

Свойства

AcceptList

Это свойство возвращает перечисление отдельных разрешений на доступ, хранящихся в данном объекте WebPermission.This property returns an enumeration of a single accept permissions held by this WebPermission. Возможными типами объектов, содержащихся в возвращаемом перечислении, являются String и Regex.The possible objects types contained in the returned enumeration are String and Regex.

ConnectList

Это свойство возвращает перечисление отдельных разрешений на подключение, хранящихся в данном WebPermission.This property returns an enumeration of a single connect permissions held by this WebPermission. Возможными типами объектов, содержащихся в возвращаемом перечислении, являются String и Regex.The possible objects types contained in the returned enumeration are String and Regex.

Методы

AddPermission(NetworkAccess, Regex)

Добавляет в текущий объект WebPermission заданный URI с заданными правами доступа.Adds the specified URI with the specified access rights to the current WebPermission.

AddPermission(NetworkAccess, String)

Добавляет в текущий объект WebPermission заданную строку URI с заданными правами доступа.Adds the specified URI string with the specified access rights to the current WebPermission.

Assert()

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() может вызвать проблемы системы безопасности.Using Assert() can create security issues.

(Унаследовано от CodeAccessPermission)
Copy()

Создает копию WebPermission.Creates a copy of a WebPermission.

Demand()

Принудительно создает SecurityException во время выполнения, если все вызывающие методы, расположенные выше в стеке вызовов, не получили разрешения, указанного текущим экземпляром.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Унаследовано от CodeAccessPermission)
Deny()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа к ресурсу, указанному текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Унаследовано от CodeAccessPermission)
Equals(Object)

Определяет, равен ли заданный объект CodeAccessPermission текущему объекту CodeAccessPermission.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Унаследовано от CodeAccessPermission)
FromXml(SecurityElement)

Восстанавливает WebPermission из XML-представления.Reconstructs a WebPermission from an XML encoding.

GetHashCode()

Возвращает хэш-код для объекта CodeAccessPermission, который можно использовать в алгоритмах хэширования и структурах данных, например в хэш-таблице.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Унаследовано от CodeAccessPermission)
GetType()

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

(Унаследовано от Object)
Intersect(IPermission)

Возвращает логическое пересечение двух экземпляров WebPermission.Returns the logical intersection of two WebPermission instances.

IsSubsetOf(IPermission)

Определяет, является ли текущее WebPermission подмножеством заданного объекта.Determines whether the current WebPermission is a subset of the specified object.

IsUnrestricted()

Проверяет полное состояние разрешения для WebPermission.Checks the overall permission state of the WebPermission.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
PermitOnly()

Запрещает вызывающим объектам выше в стеке вызовов использовать код, который вызывает этот метод для доступа ко всем ресурсам, за исключением ресурса, указанного текущим экземпляром.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(Унаследовано от CodeAccessPermission)
ToString()

Создает и возвращает строковое представление текущего объекта разрешения.Creates and returns a string representation of the current permission object.

(Унаследовано от CodeAccessPermission)
ToXml()

Создает кодировку XML для WebPermission и его текущего состояния.Creates an XML encoding of a WebPermission and its current state.

Union(IPermission)

Возвращает логическое объединение между двумя экземплярами класса WebPermission.Returns the logical union between two instances of the WebPermission class.

Явные реализации интерфейса

IPermission.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Assert() (Унаследовано от CodeAccessPermission)
IStackWalk.Demand() (Унаследовано от CodeAccessPermission)
IStackWalk.Deny() (Унаследовано от CodeAccessPermission)
IStackWalk.PermitOnly() (Унаследовано от CodeAccessPermission)

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

Дополнительно