我只需要显示Active Directory中的用户名,我正在使用
lbl_Login.Text = User.Identity.Name; //the result is domain\username
这显示了用户名,但没有显示用户的真实姓名,我已经检查过相关的其他问题和答案,但我还没有得到解决方案。
是否存在任何属性" User.Identity.Name"只获取用户的名字?
答案 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;
}
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;
}
}
}