다음을 통해 공유


WebPermission 클래스

HTTP 인터넷 리소스에 액세스하는 권한을 제어합니다.

네임스페이스: System.Net
어셈블리: System(system.dll)

구문

‘선언
<SerializableAttribute> _
Public NotInheritable Class WebPermission
    Inherits CodeAccessPermission
    Implements IUnrestrictedPermission
‘사용 방법
Dim instance As WebPermission
[SerializableAttribute] 
public sealed class WebPermission : CodeAccessPermission, IUnrestrictedPermission
[SerializableAttribute] 
public ref class WebPermission sealed : public CodeAccessPermission, IUnrestrictedPermission
/** @attribute SerializableAttribute() */ 
public final class WebPermission extends CodeAccessPermission implements IUnrestrictedPermission
SerializableAttribute 
public final class WebPermission extends CodeAccessPermission implements IUnrestrictedPermission

설명

WebPermission은 인터넷 리소스에 대한 액세스를 제어하는 메서드 및 속성 집합을 제공합니다. WebPermission을 사용하면 WebPermission이 만들어질 때 설정되는 PermissionState에 따라 리소스에 대한 제한 또는 무제한 액세스 중 하나를 제공할 수 있습니다.

다음 매개 변수 집합 중 하나를 사용해서 해당 생성자를 호출하여 WebPermission 인스턴스를 만듭니다.

  • 매개 변수 없음. 기본 PermissionStateNone입니다.

  • PermissionState입니다. 대상 클래스에서 모든 URI를 사용할 수 있도록 하려면 Unrestricted를 지정하고, AddPermission 메서드를 사용하여 지정한 URI에만 액세스할 수 있도록 하려면 None을 지정합니다.

  • NetworkAccess 값 및 URI 문자열입니다. 지정된 URI에는 NetworkAccess 값에 의해 부여된 사용 권한이 있습니다.

  • NetworkAccess 지정자 및 URI 정규식입니다.

ConnectListAcceptList에는 액세스 권한이 부여된 URI가 있습니다. 이러한 목록 중 하나에 URI를 추가하려면 AddPermission을 사용합니다. AcceptNetworkAccess 매개 변수로 전달하면 URI가 AcceptList에 추가됩니다. WebPermission은 URI가 AcceptList와 일치하는 대상 클래스에 대한 연결을 허용합니다.

경고

인터넷 리소스에 대한 액세스를 Deny하려면 해당 리소스의 가능한 모든 경로에 대한 액세스를 Deny해야 합니다. 따라서 특정 리소스에만 액세스를 허용하는 것이 좋습니다. 이 주제에 대한 자세한 내용은 Deny 메서드 사용 항목을 참조하십시오.

참고

리소스 정식 경로로만 액세스를 Deny해야 합니다. 모든 경로의 구문 변형을 사용할 필요는 없습니다.

참고

사용자 이름 및 기본 포트 정보는 WebPermission(NetworkAccess,Regex) 생성자에 제공되는 정규식 인수와 비교되기 전에 Uri에서 제거됩니다. 정규식에 사용자 정보나 기본 포트 번호가 포함되어 있으면 들어오는 모든 Uri가 정규식과 일치하지 않게 됩니다.

예제

다음 예제에서는 Regex를 사용하여 WebPermission의 새 인스턴스를 만드는 방법을 보여 줍니다. 추가 호스트가 WebPermission의 연결 및 허용 목록에 추가됩니다. 마지막으로, 연결 및 허용 목록이 콘솔에 표시됩니다.

' 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, "https://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
//  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,"https://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 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, "https://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,
    "https://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.get_ConnectList();
Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
while (myConnectEnum.MoveNext()) {
    Console.WriteLine("\t" + myConnectEnum.get_Current());
}
// Get all the URIs with Accept permission.      
IEnumerator myAcceptEnum = myWebPermission.get_AcceptList();
Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");

while (myAcceptEnum.MoveNext()) {
    Console.WriteLine("\t" + myAcceptEnum.get_Current());

상속 계층 구조

System.Object
   System.Security.CodeAccessPermission
    System.Net.WebPermission

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

WebPermission 멤버
System.Net 네임스페이스
CodeAccessPermission
PermissionState
NetworkAccess 열거형