Поделиться через


Проверка клиентского доступа к запрошенным ресурсам в скрипте

Вызовите метод AccessCheck объекта IAzClientContext, чтобы проверка, имеет ли клиент доступ к одной или нескольким операциям. Сведения о создании объекта IAzClientContext см. в разделе Установка контекста клиента в скрипте.

Клиент может иметь членство в нескольких ролях, а операция может быть назначена нескольким задачам, поэтому диспетчер авторизации проверяет все роли и задачи. Если какая-либо роль, которой принадлежит клиент, содержит задачу, содержащую операцию, доступ к этой операции предоставляется.

Чтобы проверка доступ только для одной роли, к которой принадлежит клиент, задайте свойство RoleForAccessCheck объекта IAzClientContext.

При инициализации хранилища политик авторизации для доступа проверка необходимо передать ноль в качестве значения параметра lFlags метода Initialize объекта AzAuthorizationStore.

Кроме того, можно применить бизнес-логику во время выполнения, чтобы получить доступ. Сведения о квалифицированном доступе с помощью бизнес-логики см. в разделе Квалификация доступа с помощью бизнес-логики в скрипте.

В следующем примере показано, как проверка доступ клиента к операции. В примере предполагается, что в корневом каталоге диска C имеется хранилище политик XML с именем MyStore.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)

%>