IAzClientContext::AccessCheck 方法 (azroles.h)

AccessCheck 方法确定是否允许当前客户端上下文执行指定的操作。

语法

HRESULT AccessCheck(
  [in]           BSTR    bstrObjectName,
  [in]           VARIANT varScopeNames,
  [in]           VARIANT varOperations,
  [in, optional] VARIANT varParameterNames,
  [in, optional] VARIANT varParameterValues,
  [in, optional] VARIANT varInterfaceNames,
  [in, optional] VARIANT varInterfaceFlags,
  [in, optional] VARIANT varInterfaces,
  [out]          VARIANT *pvarResults
);

参数

[in] bstrObjectName

所访问对象的名称。 此字符串用于审核。

[in] varScopeNames

包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个 VT_BSTR ,其中包含 由 bstrObjectName 参数指定的对象匹配的范围的名称。 数组只能包含一个元素。 若要使用默认的应用程序级别范围,请将数组中的第一个条目设置为空字符串 (“”) 或 VT_EMPTY,或将 VT_EMPTY 传递给此参数。

[in] varOperations

检查客户端上下文的访问的操作。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个表示 IAzApplication 策略中 IAzOperation 对象的 OperationID 属性的VT_I2VT_I4

[in, optional] varParameterNames

业务规则可用的参数名称 (BizRules 通过 AzBizRuleContext::GetParameter 方法) 。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个包含参数名称 的VT_BSTR 。 此数组必须按调用方按字母顺序排序;排序顺序由区分大小写的 VarCmp 定义。 varParameterValues 数组的顺序必须与此数组的顺序匹配。 默认值为 VT_NULL

[in, optional] varParameterValues

可用于业务规则的参数值 (BizRules 通过 AzBizRuleContext::GetParameter 方法) 。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个值,该值对应于 varParameterNames 数组中的元素。 默认值为 VT_NULL。 数组中的条目可以保存除 VT_UNKNOWNVT_DISPATCH以外的任何类型。

[in, optional] varInterfaceNames

在 BizRule 脚本中, varInterfaces 数组中的接口所依据的名称。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个包含接口名称的字符串变体。 此方法为数组中的每个条目调用 IActiveScript::AddNamedItem 方法。 默认值为 VT_NULL

[in, optional] varInterfaceFlags

将在调用 IActiveScript::AddNamedItem 时传递的标志。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含 一个VT_I4。 SCRIPTITEM_ISVISIBLE标志是隐含的;忽略SCRIPTITEM_ISPERSISTENT标志。 数组中的每个条目都必须与 varInterfaceNames 数组中的相应元素匹配。 默认值为 VT_NULL

[in, optional] varInterfaces

将提供给 BizRule 脚本的 IDispatch 接口。 这是一个包含 SAFEARRAY 或 JScript Array 对象的变体。 数组的每个元素都包含一个 IDispatch 接口。 数组中的每个条目都必须与 varInterfaceNames 数组中的相应元素匹配。 默认值为 VT_NULL

[out] pvarResults

指向 VARIANT 的指针,用于返回包含访问检查结果的 SAFEARRAYSAFEARRAY 的每个元素都是 VT_I4 类型的 VARIANT。 数组中的每个条目都匹配 varOperations 数组中的相应元素。 如果向客户端上下文授予了对操作的访问权限,则会在 pvarResults 数组的相应元素中返回值 NO_ERROR。 任何其他值表示未授予对该操作的访问权限。 指示失败的典型值ERROR_ACCESS_DENIED。

在 JScript 中,返回的 SAFEARRAY 必须转换为 JScript Array 对象。

返回值

如果方法成功,该方法将返回NO_ERROR。

如果方法失败,它将返回一个 HRESULT 值,该值指示方法的状态,而不是访问检查的结果。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

返回代码/值 说明
ERROR_FILE_CORRUPT
如果使用 Active Directory 授权存储并且已委托管理范围,则可以返回此错误代码。 委托范围中的任务和角色定义不能具有 BizRules。 如果委托作用域内的任务或角色定义包含 BizRule (如果存储) 损坏,则 AccessCheck 方法将失败。
OLESCRIPT_E_SYNTAX
用于评估访问权限的 BizRule 包含语法错误。

注解

如果在客户端上下文中定义了 RoleForAccessCheck 属性,则仅对该角色执行 AccessCheck 方法。

调用此方法时,应用程序组成员身份将添加到客户端上下文中,因此无需重新计算它,以便对同一客户端上下文进行后续访问检查。

BizRule 无法调用此方法。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 azroles.h
Library Azroles.lib
DLL Azroles.dll
可再发行组件 Windows XP 上的 Windows Server 2003 管理工具包