Memeriksa Keanggotaan Peran
Anda dapat memanggil metode ISecurityCallContext::IsCallerInRole untuk menentukan apakah pemanggil langsung objek adalah anggota peran tertentu. Fungsionalitas ini berguna ketika Anda ingin memastikan bahwa blok kode tertentu tidak dijalankan kecuali penelepon adalah anggota peran tertentu.
Misalnya, Anda dapat menggunakan IsCallerInRole untuk memastikan bahwa transaksi dalam jumlah tertentu, seperti $1000, hanya dilakukan oleh anggota peran Manajer. Jika penelepon bukan Manajer dan transaksi lebih dari $1000, transaksi tidak dilakukan dan pesan kesalahan ditampilkan.
Cara yang disukai untuk mengakses IsCallerInRole adalah melalui objek konteks panggilan keamanan karena Anda dapat menggunakan referensi yang sama ke objek konteks panggilan keamanan untuk mendapatkan properti keamanan. Namun, Anda juga dapat mengakses metode IsCallerInRoledari objek ObjectContext . (Lihat ObjectContext atau IObjectContext untuk informasi selengkapnya.)
Jika Anda mengembangkan komponen untuk aplikasi Microsoft Visual Basic, Anda memanggil fungsi GetSecurityCallContext lalu menggunakan konteks panggilan keamanan untuk memanggil IsCallerInRole, seperti yang ditunjukkan dalam contoh berikut:
If (GetSecurityCallContext.IsCallerInRole("Manager")) Then
' Go ahead and perform the transaction.
Else
' Display an error message.
End If
Jika Anda mengembangkan aplikasi C atau C++, gunakan CoGetCallContext untuk mengambil pointer ke antarmuka ISecurityCallContext. Kemudian Anda memanggil ISecurityCallContext::IsCallerInRole, seperti yang ditunjukkan dalam contoh berikut:
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;
Topik terkait