使用 ASP.NET (C#),我设置了授权管理器,以允许我处理网站上的角色。将用户添加到角色很简单 Roles.AddUserToRole("DOMAIN\\UserName", "role")
。不过,我想列出属于某个角色的用户,但由于它们存储为 SID,因此显示它们并没有多大帮助。为了获取用户,我认为必须使用 XML,尽管是否可以使用 COM Interop 来做到这一点并获取用户名?不管怎样,我怎样才能获得属于某个角色的用户?
管理角色的表基本上是这样的:
Role User
---- ----
admin DOMAIN\UserName [delete]
DOMAIN\UserName2 [delete]
[add user text box]
news DOMAIN\UserName3 [delete]
[add user text box]
最佳答案
找到了一种方法(IAzRole Interface,感谢 Bermo),循环遍历每个角色的 MembersName 属性。无需映射回 Windows 帐户,除非您需要获取的不仅仅是用户名。
设置角色详见文章:How To: Use Authorization Manager (AzMan) with ASP.NET 2.0
在 Visual Studio 项目中添加对 AzMan COM 库(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);
这会显示角色列表以及每个角色中的成员。
关于c# - 使用授权管理器 (AzMan) 获取属于某个角色的用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2599512/