Как получить все подготовленные операции от AzMan за один вызов? - PullRequest
1 голос
/ 27 января 2011

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

1 Ответ

0 голосов
/ 21 февраля 2011

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).

...