我在我的 .net C# 应用程序中使用授权管理器。在应用程序启动期间,我缓存用户有权访问的所有操作,然后使用此缓存数据进行进一步处理。问题是 - 我一次只能检查一个操作的访问权限,所以如果我在 azman 中有 100 次操作并且用户只提供了 5 条规则,我仍然需要对 AzMan 进行 100 次调用以获取所有配置的规则。有什么方法可以让我在一次通话中获取用户的所有预置规则?
问问题
665 次
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);
...
我还没有测试过它能处理多少个,我通常一次只做一个。但理论上它会起作用。
我也没有尝试使用多个范围来执行此操作(我必须使用不支持 AccessCheck 中的多个范围的旧 AzMan 1.0 架构)。
于 2011-02-21T06:45:05.810 回答