CodeAccessPermission.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.

public:
 void PermitOnly();
[System.Diagnostics.Conditional("FEATURE_MONO_CAS")]
public void PermitOnly ();
member this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

구현

특성

예외

현재 프레임에 대해 활성 PermitOnly()가 이미 있습니다.There is already an active PermitOnly() for the current frame.

설명

중요

PermitOnly 메서드는 완전히 신뢰할 수 있는 코드에서 실수로 액세스 하지 못하도록 리소스를 보호 하는 데만 사용 해야 합니다.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. 신뢰할 수 없는 코드의 의도적인 오용 으로부터 리소스를 보호 하는 데 사용 하면 안 됩니다.It should not be used to protect resources from intentional misuse by untrusted code. 예를 들어 메서드 A 사용 권한에 대 한 PermitOnly를 발급 한 다음 메서드 B를 호출 하는 경우 메서드 B PermitOnly를 실행 하 여 Assert를 overtly 재정의할 수 있습니다.For example, if method A issues a PermitOnly for a permission and then calls method B, method B can overtly override the PermitOnly by issuing an Assert. 호출 된 메서드는 스택에서 항상 높습니다.The called method is always higher in the stack. 따라서 메서드 B 보호 되는 리소스에 액세스 하려고 하면 보안 시스템은 해당 리소스에 대 한 사용 권한을 확인 하기 시작 합니다. 메서드 B는 직접 호출자 이기 때문에 스택 아래로 이동 하 여 Deny 또는 PermitOnly이 없음을 확인 합니다. 스택에서.Therefore, if method B tries to access a protected resource, the security system begins checking for permissions with it because method B is the immediate caller, and then walks down the stack to confirm that there is no Deny or PermitOnly lower in the stack. 리소스에 액세스 하려고 하는 B메서드는 Assert 메서드를 사용 하 여 스택 워크를 즉시 중지할 수 있습니다.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. 이 경우 메서드에 A 메서드 (호출 메서드)로 스택에 배치 된 PermitOnly는 절대 검색 되지 않습니다.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly 비슷합니다 Deny스택 워크는 성공이 고, 그렇지 때 있는 상황에서, 합니다.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. 점이 Deny 실패는 스택 워크는 사용 권한을 지정 하지만 PermitOnly 실패 스택 워크가 발생 하지 않는 유일한 사용 권한을 지정 합니다.The difference is that Deny specifies permissions that will cause the stack walk to fail, but PermitOnly specifies the only permissions that do not cause the stack walk to fail.

지정 된 리소스에 액세스 하려면 코드를 사용할 수 있도록 하려면이 메서드를 호출 합니다.Call this method to ensure that your code can be used to access only the specified resources. PermitOnly 호출은 호출 코드가 호출자에 게 반환 될 때까지 적용 됩니다.The call to PermitOnly is effective until the calling code returns to its caller. 하나의 프레임에는 PermitOnly 하나만 활성화할 수 있습니다.Only one PermitOnly can be active on a frame. 프레임에 활성 PermitOnly 있는 경우 PermitOnly를 호출 하려고 하면 SecurityException발생 합니다.An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. RevertPermitOnly 또는 RevertAll를 호출 하 여 활성 PermitOnly를 제거 합니다.Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly 해당 권한 요청에 실패 합니다 부여 되지 않은 사용 권한을 무시 됩니다.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. 그러나 하위 호출에서 나중에 스택 하는 경우 호출 Demand 해당 사용 권한에 대 한는 SecurityException 스택 워크를 호출 하려고 하는 코드에 도달할 때 발생 하는 PermitOnly합니다.However, if code lower on the call stack later calls Demand for that permission, a SecurityException is thrown when the stack walk reaches the code that tried to call PermitOnly. 코드는 호출 되므로이 작업이 PermitOnly 에 권한이 부여 되지를 호출 했지만 PermitOnly 해당 사용 권한에 대 한 합니다.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. 호출 스택의 메서드 호출 스택의 상위에 메서드를 호출 낮은 호출 스택의 있도록에 일반적으로 하향식으로 표시 됩니다.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

상속자 참고

이 메서드를 재정의할 수 없습니다.You cannot override this method.

적용 대상