1

.net C# アプリケーションで Authorization Manager を使用しています。アプリケーションの起動時に、ユーザーがアクセスできるすべての操作をキャッシュし、このキャッシュされたデータを使用してさらに処理します。問題は、一度に 1 つの操作のアクセスしか確認できないため、azman で 100 の操作があり、ユーザーが 5 つのルールに対してのみプロビジョニングされている場合でも、プロビジョニングされたすべてのルールを取得するには、AzMan に対して 100 回の呼び出しを行う必要があることです。1 回の呼び出しだけで、ユーザーにプロビジョニングされたすべてのルールを取得する方法はありますか?

4

1 に答える 1

0

IAzClientContext.AccessCheck操作IDの配列を渡すことができます。

私はこのようなことをします:

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

処理できる数を確認するためのテストは行っていません。通常、一度に1つだけ実行します。しかし、理論的にはそれは機能します。

また、複数のスコープでこれを実行しようとはしていません(AccessCheckで複数のスコープをサポートしていなかった古いAzMan 1.0スキーマを使用する必要があります)。

于 2011-02-21T06:45:05.810 に答える