确定是否启用了基于角色的安全性
通过使用在安全调用上下文对象中提供的 ISecurityCallContext::IsSecurityEnabled 方法,可以确定是否为当前对象启用了安全性。 在使用 ISecurityCallContext::IsCallerInRole 之前,应调用 IsSecurityEnabled 来检查角色成员身份,因为如果未启用安全性,IsCallerInRole 将返回 True。
Microsoft Visual Basic 开发人员会调用 GetSecurityCallContext,以获取对 SecurityCallContext 对象的引用,然后调用 IsSecurityEnabled,如以下示例所示:
Dim objSecCallCtx As SecurityCallContext
Dim boolSecEn As Boolean
Set objSecCallCtx = GetSecurityCallContext()
boolSecEn = objSecCallCtx.IsSecurityEnabled()
Microsoft Visual C++ 开发人员可以调用 CoGetCallContext,以获取指向 ISecurityCallContext 的指针,然后调用 IsSecurityEnabled,籍此调用 ISecurityCallContext::IsSecurityEnabled。 下面是一个简短的示例:
ISecurityCallContext* pSecCtx;
VARIANT_BOOL bIsEnabled;
HRESULT hr1 = CoGetCallContext(IID_ISecurityCallContext, (void**)&pSecCtx);
if (FAILED(hr1)) throw(hr1);
if (NULL == pSecCtx) {
// Display error message.
return E_FAIL;
}
HRESULT hr2 = pSecCtx->IsSecurityEnabled(&bIsEnabled);
return hr2;
尽管调用 IsSecurityEnabled 的首选方法是使用安全调用上下文对象,但也可以通过对象上下文调用 IsSecurityEnabled。 (有关详细信息,请参阅 ObjectContext 或 IObjectContext。
相关主题