从Active Directory获取用户名

时间:2016-08-29 20:55:24

标签: c# asp.net active-directory

我只需要显示Active Directory中的用户名,我正在使用

 lbl_Login.Text = User.Identity.Name; //the result is domain\username

这显示了用户名,但没有显示用户的真实姓名,我已经检查过相关的其他问题和答案,但我还没有得到解决方案。

是否存在任何属性" User.Identity.Name"只获取用户的名字?

2 个答案:

答案 0 :(得分:17)

您需要来自Active Directory的用户名。尝试这样的代码:

string name ="";
using (var context = new PrincipalContext(ContextType.Domain))
{
    var usr = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
    if (usr != null)
       name = usr.DisplayName;  
}

或来自social.msdn.microsoft.com

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.Current;
string displayName = user.DisplayName;

或者可能是:

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;
  

System.DirectoryServices.AccountManagement namespace提供跨多个主要存储的用户,计算机和组安全主体的统一访问和操作:Active Directory域服务(AD DS),Active Directory轻量级目录服务(AD LDS)和计算机SAM(MSAM)。

答案 1 :(得分:3)

using System.DirectoryServices.AccountManagement;

string fullName = null;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
    using (UserPrincipal user = UserPrincipal.FindByIdentity(context,"hajani"))
    {
        if (user != null)
        {
            fullName = user.DisplayName;
            lbl_Login.Text = fullName;
        }
    }
}