다음을 통해 공유


역할 멤버 자격 확인

ISecurityCallContext::IsCallerInRole 메서드를 호출하여 개체의 직접 호출자가 특정 역할의 멤버인지 여부를 확인할 수 있습니다. 이 기능은 호출자가 특정 역할의 멤버가 아닌 한 특정 코드 블록이 실행되지 않도록 하려는 경우에 유용합니다.

예를 들어 IsCallerInRole 을 사용하여 지정된 금액(예: $1000)에 대한 트랜잭션이 관리자 역할의 멤버에 의해서만 수행되도록 할 수 있습니다. 호출자가 관리자가 아니고 트랜잭션이 $1000를 초과하면 트랜잭션이 수행되지 않고 오류 메시지가 표시됩니다.

IsCallerInRole에 액세스하는 기본 방법은 보안 호출 컨텍스트 개체에 대한 동일한 참조를 사용하여 보안 속성을 가져올 수 있기 때문에 보안 호출 컨텍스트 개체를 사용하는 것입니다. 그러나 ObjectContext 개체에서 IsCallerInRole메서드에 액세스할 수도 있습니다. 자세한 내용은 ObjectContext 또는 IObjectContext 를 참조하세요.

Microsoft Visual Basic 애플리케이션에 대한 구성 요소를 개발하는 경우 다음 예제와 같이 GetSecurityCallContext 함수를 호출한 다음 보안 호출 컨텍스트를 사용하여 IsCallerInRole을 호출합니다.

If (GetSecurityCallContext.IsCallerInRole("Manager")) Then
   ' Go ahead and perform the transaction.
Else
   ' Display an error message.
End If

C 또는 C++ 애플리케이션을 개발하는 경우 CoGetCallContext 를 사용하여 ISecurityCallContext 인터페이스에 대한 포인터를 검색합니다. 그런 다음, 다음 예제와 같이 ISecurityCallContext::IsCallerInRole을 호출합니다.

ISecurityCallContext* pSecCtx;
VARIANT_BOOL bIsInRole;

HRESULT hr = CoGetCallContext(IID_ISecurityCallContext, (void**)&pSecCtx);
if (FAILED(hr)) throw(hr);
if (NULL == pSecCtx) { 
    // No security call context is available.
    // Display an error message and return.
    return E_FAIL;
}
hr = pSecCtx->IsCallerInRole(myRole, &bIsInRole);
return hr;

보안 호출 컨텍스트 정보에 액세스

Role-Based 보안 사용 여부 결정

프로그래밍 방식 구성 요소 보안