6

我正在尝试使用活动目录成员而不是 SQL,但在线可用的文档非常有限。我设法将我的应用程序连接到域控制器没有任何问题,但是当您使用“Context.User.Identity.Name”时,它会出现 DOMAIN\User。我想基本上向下钻取并获取诸如全名,电子邮件地址等信息。

我只需要一个有用的链接,而我所做的搜索似乎没有让我到任何地方!

非常感谢

4

3 回答 3

0

你试过这个文档吗?

http://msdn.microsoft.com/en-US/library/system.web.security.activedirectorymembershipprovider%28v=vs.90%29.aspx

能够帮助?

于 2011-01-12T16:56:29.960 回答
0

这应该会给您一些线索: http: //msdn.microsoft.com/en-us/library/ms973834.aspx ,这里是您可能希望在搜索结果中使用的 LDAP 属性列表:http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

于 2011-01-12T16:57:38.563 回答
0

如果您正在使用 Active Directory,那么您可能正在使用 Windows 身份验证。如果是这样,您需要做的就是:

  1. 参考System.DirectoryServices.AccountManagement

  2. 在代码中(可能是控制器操作或模型构造函数)

    // 将您的域建立为用户查找的上下文 var principalContext = new PrincipalContext(ContextType.Domain, "domainName");

    // 获取当前用户的 UserPrincipal 对象 var userPrincipal.FindByIdentity(principalContext, @User.Identity.Name)

    // 示例 var email = userPrincipal.EmailAddress;

笔记:

  • 这是有效的,因为 Windows 身份验证意味着User.Identity当前HttpContext是 a WindowsIdentity,因此它的Name属性可用于搜索 AD。

  • 您不仅限于查找当前用户。您可以使用FindByIdentity()搜索任何传递的值,并且此方法存在于其他主体(例如 GroupPrincipal)上。您还可以指定您希望按其他类型(例如 SID)而不是名称进行搜索。

享受!

于 2012-10-30T21:15:37.393 回答