다음을 통해 공유


CodeAccessPermission.PermitOnly 메서드

정의

호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 통해 현재 인스턴스에서 지정한 리소스를 제외한 모든 리소스에 액세스할 수 없게 합니다.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

구현

예외

현재 프레임에 대해 활성 PermitOnly()가 이미 있습니다.

설명

중요

메서드는 PermitOnly 완전히 신뢰할 수 있는 코드로 인한 실수로 인한 액세스로부터 리소스를 보호하는 데만 사용해야 합니다. 신뢰할 수 없는 코드에 의한 의도적인 오용으로부터 리소스를 보호하는 데 사용하면 안 됩니다. 예를 들어 메서드 A 가 권한에 대해 을 PermitOnly 발급한 다음 메서드 B를 호출하는 경우 메서드 B 는 를 실행Assert하여 를 재정의 PermitOnly 할 수 있습니다. 호출된 메서드는 스택에서 항상 더 높습니다. 따라서 메서드 B 가 보호된 리소스에 액세스하려고 하면 메서드 B 가 즉시 호출자이기 때문에 보안 시스템에서 해당 리소스에 대한 사용 권한 확인을 시작한 다음 스택 아래로 걸어 스택에 없거나 낮은 리소스가 있는지 DenyPermitOnly 확인합니다. 리소스에 액세스하려는 메서드는 메서드 B를 사용하여 스택 워크를 즉시 중지할 Assert 수 있습니다. 이 경우 PermitOnly 메서드(호출 메서드 A )로 스택에 배치된 는 검색되지 않습니다.

PermitOnly 비슷합니다 Deny스택 워크는 성공이 고, 그렇지 때 있는 상황에서, 합니다. 점이 Deny 실패는 스택 워크는 사용 권한을 지정 하지만 PermitOnly 실패 스택 워크가 발생 하지 않는 유일한 사용 권한을 지정 합니다.

지정 된 리소스에 액세스 하려면 코드를 사용할 수 있도록 하려면이 메서드를 호출 합니다. 에 대한 PermitOnly 호출은 호출 코드가 호출자에게 반환될 때까지 유효합니다. 프레임에서 하나 PermitOnly 만 활성화할 수 있습니다. 프레임에 활성 PermitOnly 이 있을 때 를 호출 PermitOnly 하려고 하면 가 발생합니다SecurityException. 또는 RevertAll 를 호출 RevertPermitOnly 하여 활성 PermitOnly를 제거합니다.

PermitOnly 해당 권한 요청에 실패 합니다 부여 되지 않은 사용 권한을 무시 됩니다. 그러나 하위 호출에서 나중에 스택 하는 경우 호출 Demand 해당 사용 권한에 대 한는 SecurityException 스택 워크를 호출 하려고 하는 코드에 도달할 때 발생 하는 PermitOnly합니다. 코드는 호출 되므로이 작업이 PermitOnly 에 권한이 부여 되지를 호출 했지만 PermitOnly 해당 사용 권한에 대 한 합니다. 호출 스택의 메서드 호출 스택의 상위에 메서드를 호출 낮은 호출 스택의 있도록에 일반적으로 하향식으로 표시 됩니다.

상속자 참고

이 메서드를 재정의할 수 없습니다.

적용 대상