public List <string> GetObjectsByPermission(string accountID, string permission) { List <string> channels = new List <string>(); object tmpObj = HttpContext.Current.Session[accountID + "MyPermissionChannelList" + permission]; if (tmpObj != null) { channels = (List <string>)tmpObj; } else { IAccountHelper ah = AccountFactory.CreateInstance(); List <string> allowOwners = ah.GetRolesOfAccount(accountID); allowOwners.Add(accountID); channels = GetObjectID(allowOwners, permission); HttpContext.Current.Session[accountID + "MyPermissionChannelList" + permission] = channels; } return(channels); }
/// <summary> /// 获取用户所具有的所有权限内容列表(包含了所属角色的权限列表) /// </summary> /// <param name="accountID">用户ID</param> /// <param name="objectID">菜单ID或栏目ID</param> /// <returns>权限列表</returns> public List <string> GetPermissionContents(string accountID, string objectID) { List <string> contents = new List <string>(); string key = "$AccountAllPermissionContents" + accountID + objectID; if (HttpContext.Current.Items[key] == null) { Criteria c = new Criteria(CriteriaType.Equals, "ObjectID", objectID); Criteria subc = new Criteria(CriteriaType.None); subc.Mode = CriteriaMode.Or; subc.Add(CriteriaType.Equals, "OwnerID", accountID); //获取用户所拥有的角色,如果拥有则继续获取每个角色的权限 IAccountHelper ah = AccountFactory.CreateInstance(); List <string> roles = ah.GetRolesOfAccount(accountID); if (roles != null) { foreach (string ar in roles) { subc.Add(CriteriaType.Equals, "OwnerID", ar); } c.Criterias.Add(subc); } List <Permission> plist = Assistant.List <Permission>(c, null); if (plist != null) { foreach (Permission p in plist) { contents.Add(p.Content); } } HttpContext.Current.Items[key] = contents; } else { contents = HttpContext.Current.Items[key] as List <string>; } return(contents); }