如何在一次通话中从AzMan获得所有配置的操作?

时间:2011-01-27 11:09:13

标签: c# azman

我在.net C#应用程序中使用授权管理器。在应用程序启动期间,我缓存用户有权访问的所有操作,然后使用此缓存数据进行进一步处理。问题是 - 我一次只能检查一个操作的访问权限,所以如果我在azman中有100个操作并且用户仅被规定为5个规则,那么我仍然需要对AzMan进行100次调用才能获得所有配置的规则。有什么办法可以让我只在一次通话中获得用户的所有规定规则吗?

1 个答案:

答案 0 :(得分: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);
        ...

我没有测试过它会处理多少,我通常一次只做一次。但理论上它会起作用。

我还没有尝试使用多个范围执行此操作(我必须使用不支持AccessCheck中多个范围的旧AzMan 1.0架构。)