在脚本中验证客户端对请求资源的访问权限
调用 IAzClientContext 对象的 AccessCheck 方法以检查客户端是否有权访问一个或多个操作。 有关创建 IAzClientContext 对象的信息,请参阅 在脚本中建立客户端上下文。
一个客户端可能具有多个角色的成员身份,并且一个操作可能分配给多个任务,因此授权管理器会检查所有角色和任务。 如果客户端所属的任何角色包含任何包含操作的任务,则会授予对该操作的访问权限。
若要仅检查客户端所属的单个角色的访问权限,请设置 IAzClientContext 对象的 RoleForAccessCheck 属性。
为访问检查初始化授权策略存储时,必须将零作为 AzAuthorizationStore 对象的 Initialize 方法的 lFlags 参数的值传递。
还可以在运行时应用业务逻辑来限定访问权限。 有关使用业务逻辑限定访问权限的信息,请参阅 脚本中的通过业务逻辑限定访问权限。
以下示例演示如何检查客户端对操作的访问权限。 该示例假定驱动器 C 根目录中有一个名为 MyStore.xml 的现有 XML 策略存储,并且此存储包含名为 Expense 的应用程序和名为 UseFormControl 的操作。
<%@ Language=VBScript %>
<%
' Create the AzAuthorizationStore object.
Dim AzManStore
Set AzManStore = CreateObject("AzRoles.AzAuthorizationStore")
' Initialize the authorization store.
AzManStore.Initialize 0, "msxml://C:\MyStore.xml"
' Open the application object in the store.
Dim expenseApp
Set expenseApp = AzManStore.OpenApplication("Expense")
' Create a client context.
Dim clientName
clientName = Request.ServerVariables("LOGON_USER")
Dim clientContext
Set clientContext = _
expenseApp.InitializeClientContextFromName(clientName)
' Open the operation to check.
Dim formOperation
Set formOperation = expenseApp.OpenOperation("UseFormControl")
' Get the ID of the operation.
Dim operationID
operationID = formOperation.OperationID
' Check access.
Dim Operations(1)
Operations(0) = operationID
Dim Results
Results = _
clientContext.AccessCheck("UseFormControl", Empty, Operations)
%>