Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz wywołać metodę ISecurityCallContext::IsCallerInRole, aby określić, czy obiekt bezpośrednio wywołujący jest członkiem określonej roli. Ta funkcja jest przydatna, gdy chcesz upewnić się, że określony blok kodu nie jest wykonywany, chyba że obiekt wywołujący jest członkiem określonej roli.
Na przykład można użyć IsCallerInRole, aby upewnić się, że transakcje powyżej określonej kwoty, takie jak 1000 USD, są wykonywane tylko przez członków roli Menedżerowie. Jeśli obiekt wywołujący nie jest menedżerem, a transakcja wynosi ponad 1000 USD, transakcja nie jest wykonywana i wyświetlany jest komunikat o błędzie.
Preferowanym sposobem uzyskiwania dostępu do IsCallerInRole jest użycie obiektu kontekstu wywołania zabezpieczeń, ponieważ można użyć tego samego odwołania do obiektu kontekstu wywołania zabezpieczeń w celu uzyskania właściwości zabezpieczeń. Można jednak również uzyskać dostęp do metody IsCallerInRolez obiektu ObjectContext. (Aby uzyskać więcej informacji, zobacz ObjectContext lub IObjectContext).
Jeśli tworzysz składniki dla aplikacji Microsoft Visual Basic, wywołasz funkcję GetSecurityCallContext, a następnie użyj kontekstu wywołania zabezpieczeń, aby wywołać IsCallerInRole, jak pokazano w poniższym przykładzie:
If (GetSecurityCallContext.IsCallerInRole("Manager")) Then
' Go ahead and perform the transaction.
Else
' Display an error message.
End If
Jeśli tworzysz aplikację języka C lub C++, użyj CoGetCallContext, aby pobrać wskaźnik do interfejsu ISecurityCallContext. Następnie wywołasz metodę ISecurityCallContext::IsCallerInRole, jak pokazano w poniższym przykładzie:
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;
Tematy pokrewne