c# - 使用授权管理器 (AzMan) 获取属于某个角色的用户列表

标签 c# asp.net authorization azman authorizationmanager

使用 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/

相关文章:

c# - WinForms 中的只读组合框

c# - 动态为资源添加值 (C#)

html - 无法向上移动超大屏幕中的 ASP.NET Mvc 按钮

javascript - 设置组件特定部分的授权

curl - Golang 单足/双足oauth 1.0a认证

c# - 如何使用 WPF 的 UI 自动化将右键单击事件发送到 AutomationElement?

c# - 如何从 NHibernate 调用没有结果的存储过程?

c# - 如何在 .NET 中创建线程转储? (一个 la JVM 线程转储)

asp.net-mvc - 具有自定义重定向的 AuthorizeAttribute

c# - 获取上传图像的尺寸?