Как получить все подготовленные операции от AzMan за один вызов?

Я использую диспетчер авторизации в своем приложении .net C #. Во время запуска приложения я кэширую все операции, к которым у пользователя есть доступ, а затем использую эти кэшированные данные для дальнейшей обработки. Проблема в том, что я могу проверять доступ только для одной операции за раз, поэтому, если у меня есть 100 операций в azman, а пользователь предоставлен только для 5 правил, мне все равно нужно сделать 100 вызовов AzMan, чтобы получить все подготовленные правила. Есть ли способ получить все подготовленные правила для пользователя только за один вызов?


person Kapil    schedule 27.01.2011    source источник


Ответы (1)


IAzClientContext.AccessCheck позволяет передавать массив идентификаторов операций.

Я делаю примерно так:

public Tuple<bool, List<int>> AccessCheck(string auditObjectName, List<string> scopeNames, List<int> operations, SortedList<string, string> parameters)
    {
        object[] operationsArray = operations.ConvertAll(i => (object)i).ToArray();
        ...
        object o = _context.AccessCheck(auditObjectName, (object)scopeNameArray, (object)operationsArray, (object)parameterNames, (object)parameterValues, null, null, null);
        object[] oArray = (object[])o;
        int[] authorizedOperationsArray = Array.ConvertAll(oArray, obj => (int)obj);
        ...

Я не тестировал, сколько он будет обрабатывать, и обычно делаю только по одному за раз. Но теоретически это сработает.

Я также не пробовал делать это с несколькими областями (я должен использовать старую схему AzMan 1.0, которая не поддерживала несколько областей в AccessCheck).

person Alan McBee    schedule 21.02.2011