CodeAccessPermission.PermitOnly 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
호출 스택의 상위 호출자가 현재 인스턴스에서 지정한 리소스를 제외한 모든 리소스에 액세스하기 위해 이 메서드를 호출하는 코드를 사용하지 못하도록 합니다.
public:
virtual void PermitOnly();
public void PermitOnly();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()
구현
예외
현재 프레임에 대한 활성 PermitOnly() 이 이미 있습니다.
설명
Important
이 메서드는 PermitOnly 완전히 신뢰할 수 있는 코드로 인한 실수로 인한 액세스로부터 리소스를 보호하는 데만 사용해야 합니다. 신뢰할 수 없는 코드에 의한 의도적인 오용으로부터 리소스를 보호하는 데 사용하면 안 됩니다. 예를 들어 메서드 A 가 권한에 대해 발급한 PermitOnly 다음 메서드B를 호출하는 경우 메서드를 실행하여 Assert메서드 B 를 재정의할 PermitOnly 수 있습니다. 호출된 메서드는 스택에서 항상 더 높습니다. 따라서 메서드 B 가 보호된 리소스에 액세스하려고 하면 메서드 B 가 즉시 호출자이므로 보안 시스템에서 해당 리소스에 대한 사용 권한 확인을 시작한 다음 스택 아래로 걸어 스택에 없음 Deny 또는 PermitOnly 아래쪽이 있는지 확인합니다. 리소스에 액세스하려는 메서드는 메서드 B를 사용하여 스택 워크를 즉시 중지할 Assert 수 있습니다. 이 경우 PermitOnly 메서드(호출 메서드 A )로 스택에 배치된 항목은 검색되지 않습니다.
PermitOnly 는 스택 워크가 실패할 때 스택 워크가 실패하게 되므로 둘 다 성공한다는 점과 비슷합니다 Deny. 차이점은 Deny 스택 워크가 실패하게 만드는 사용 권한을 지정하지만 PermitOnly 스택 워크가 실패하지 않는 유일한 사용 권한을 지정한다는 것입니다.
지정된 리소스에만 액세스하는 데 코드를 사용할 수 있는지 확인하려면 이 메서드를 호출합니다. 호출 코드가 호출자에게 PermitOnly 반환될 때까지 호출이 유효합니다. 프레임에서 하나 PermitOnly 만 활성화할 수 있습니다. 프레임SecurityException에 활성 PermitOnly 이 있을 때 호출 PermitOnly 하려고 하면 . 활성PermitOnly을 호출 RevertPermitOnly 하거나 RevertAll 제거합니다.
PermitOnly 는 해당 권한에 대한 요구가 성공하지 못하므로 부여되지 않은 권한에 대해 무시됩니다. 그러나 호출 스택의 코드가 나중에 해당 권한을 SecurityException 호출 Demand 하는 경우 스택 워크가 호출PermitOnly을 시도한 코드에 도달하면 throw됩니다. 호출된 코드가 PermitOnly 해당 사용 권한을 요청 PermitOnly 했음에도 불구하고 권한이 부여되지 않았기 때문입니다. 호출 스택은 일반적으로 아래로 증가하는 것으로 표시되므로 호출 스택 호출 메서드에서 더 높은 메서드는 호출 스택에서 더 낮습니다.
상속자 참고
이 메서드는 재정의할 수 없습니다.