Share via


Verifica dell'appartenenza al ruolo

È possibile chiamare il metodo ISecurityCallContext::IsCallerInRole per determinare se il chiamante diretto di un oggetto è membro di un ruolo specifico. Questa funzionalità è utile quando si vuole assicurarsi che un determinato blocco di codice non venga eseguito a meno che il chiamante non sia membro di un ruolo specifico.

Ad esempio, è possibile usare IsCallerInRole per garantire che le transazioni su un importo specificato, ad esempio $ 1000, vengano eseguite solo dai membri di un ruolo Manager. Se il chiamante non è un manager e la transazione è superiore a $1000, la transazione non viene eseguita e viene visualizzato un messaggio di errore.

Il modo preferito per accedere a IsCallerInRole è tramite l'oggetto contesto di chiamata di sicurezza perché è possibile usare lo stesso riferimento all'oggetto contesto delle chiamate di sicurezza per ottenere le proprietà di sicurezza. Tuttavia, è anche possibile accedere al metodo IsCallerInRoledall'oggetto ObjectContext . (Vedere ObjectContext o IObjectContext per altre informazioni.

Se si sviluppano componenti per un'applicazione Microsoft Visual Basic, chiamare la funzione GetSecurityCallContext e quindi usare il contesto delle chiamate di sicurezza per chiamare IsCallerInRole, come illustrato nell'esempio seguente:

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

Se si sviluppa un'applicazione C o C++, usare CoGetCallContext per recuperare un puntatore all'interfaccia ISecurityCallContext. Chiamare quindi ISecurityCallContext::IsCallerInRole, come illustrato nell'esempio seguente:

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;

Accesso alle informazioni sul contesto delle chiamate di sicurezza

Determinare se la sicurezza basata sui ruoli è abilitata

Sicurezza dei componenti a livello di codice