找到一种方法(IAzRole接口,感谢Bermo),循环遍历每个角色的MembersName属性。无需映射回Windows帐户,除非您需要获取比用户名更多的信息。在文章中详述
设置角色:How To: Use Authorization Manager (AzMan) with ASP.NET 2.0
在Visual Studio项目到COM AzMan的库添加引用(azroles 1.0类型库)。然后添加using AZROLESLib;
。添加<form id="form1" runat="server">
,然后在Page_Load中:
AzAuthorizationStoreClass AzManStore = new AzAuthorizationStoreClass();
string connString = ConfigurationManager.ConnectionStrings["AuthorizationServices"].ConnectionString;
string path = Server.MapPath(connString.Substring("msxml://".Length));
AzManStore.Initialize(0, "msxml://" + path, null);
IAzApplication azApp = AzManStore.OpenApplication("AppName", null);
PlaceHolder p = new PlaceHolder();
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
foreach (IAzRole role in azApp.Roles)
{
sb.Append("<li>");
sb.Append(role.Name);
sb.Append("<ul>");
foreach (object member in (object[])role.MembersName)
{
sb.Append("<li>");
sb.Append(member);
sb.Append("</li>");
}
sb.Append("</ul>");
sb.Append("</li>");
}
sb.Append("</ul>");
p.Controls.Add(new LiteralControl(sb.ToString()));
form1.Controls.Add(p);
这将显示每个角色的角色和成员名单。
那么AzMan没有获得内置的反向查找,即XPath和LDAP查询的唯一方法? – SamWM 2010-04-09 09:10:20
虽然我无法验证它的工作原理,但我注意到IAzRole接口具有MembersName属性。 COM doco表示它为您执行反向查找 - http://msdn.microsoft.com/zh-cn/library/aa378219(v=VS.85).aspx – Bermo 2010-04-09 13:01:01