Csharp/C#教程:使用授权管理器(AzMan)获取属于角色的用户列表分享


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

使用ASP.NET(C#)我已经设置了授权管理器,允许我处理网站上的角色。 添加到角色的用户是简单的Roles.AddUserToRole("DOMAIN\UserName", "role") 。 但是,我想列出属于某个角色的用户,但由于它们存储为SID,因此显示它们并没有那么有用。 为了获得用户,我认为必须使用XML,尽管可以使用COM Interop来做到这一点并获取用户名吗? 无论哪种方式,我如何获得属于角色的用户?

管理角色的表基本上是这样的:

 Role User ---- ---- admin DOMAINUserName [delete] DOMAINUserName2 [delete] [add user text box] news DOMAINUserName3 [delete] [add user text box] 

找到了一种方法(IAzRole接口,感谢Bermo),循环遍历每个角色的MembersName属性。 无需映射回Windows帐户,除非您需要获得超过用户名。

设置角色详见文章: 如何:在ASP.NET 2.0中使用授权管理器(AzMan)

在Visual Studio Project中添加对AzMan COM库的引用(azroles 1.0类型库)。 然后using AZROLESLib;添加using AZROLESLib; 。 添加

,然后在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(""); sb.Append(""); } sb.Append(""); p.Controls.Add(new LiteralControl(sb.ToString())); form1.Controls.Add(p); 

这将显示每个角色中的角色和成员列表。

如果要将Azman角色信息存储在XML文件中,您应该能够使用XPath获取包含每个角色的授权用户的SID列表(尽管可能是使用LINQ2XML的好机会……):

    S-1-5-21-3124078386-165137298-1092301467-1001 S-1-5-21-3124078386-165137298-1092301467-1003    S-1-5-21-3124078386-165137298-1092301467-501   

以下post显示了将SID映射回Windows帐户的大量方法 – 如何在S#中将SID转换为帐户名称 。

请注意,角色成员可以是AD组。 因此,您无法仅通过查看角色成员来枚举所有用户。 您还需要查询AD。

上述就是C#学习教程:使用授权管理器(AzMan)获取属于角色的用户列表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1018487.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐