Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode chamar o ISecurityCallContext::IsCallerInRole método para determinar se o chamador direto de um objeto é um membro de uma função específica. Essa funcionalidade é útil quando você deseja garantir que um determinado bloco de código não seja executado, a menos que o chamador seja membro de uma função específica.
Por exemplo, você pode usar IsCallerInRole para garantir que as transações acima de um valor especificado, como $1000, sejam executadas apenas por membros de uma função de Gerentes. Se o chamador não for um Gerente e a transação for superior a $1000, a transação não será executada e uma mensagem de erro será exibida.
A maneira preferida de acessar IsCallerInRole é por meio do objeto de contexto de chamada de segurança, pois você pode usar a mesma referência ao objeto de contexto de chamada de segurança para obter propriedades de segurança. No entanto, também pode aceder ao método IsCallerInRoledo objeto ObjectContext. (Consulte ObjectContext ou IObjectContext para obter mais informações.)
Se você estiver desenvolvendo componentes para um aplicativo Microsoft Visual Basic, chame a funçãoGetSecurityCallContexte use o contexto de chamada de segurança para chamar IsCallerInRole, conforme mostrado no exemplo a seguir:
If (GetSecurityCallContext.IsCallerInRole("Manager")) Then
' Go ahead and perform the transaction.
Else
' Display an error message.
End If
Se estiver a desenvolver uma aplicação em C ou C++, use CoGetCallContext para recuperar um ponteiro para a interface ISecurityCallContext. Em seguida, você chama ISecurityCallContext::IsCallerInRole, conforme mostrado no exemplo a seguir:
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;
Tópicos relacionados