📅  最后修改于: 2023-12-03 15:12:25.879000             🧑  作者: Mango
在 C# 中获取用户信息可以通过多种方式,包括使用不同的 API 和库。本文将介绍如何通过用户名获取用户信息。
在 C# 中,可以使用 System.DirectoryServices
命名空间提供的 API 来获取 Active Directory 中的用户信息。以下代码演示了如何通过用户名获取用户对象:
using System.DirectoryServices;
public static DirectoryEntry GetUser(string username)
{
string path = $"LDAP://CN={username},DC=mydomain,DC=com";
DirectoryEntry user = new DirectoryEntry(path);
try
{
user.RefreshCache();
}
catch (Exception ex)
{
throw new Exception($"Error fetching user information: {ex.Message}");
}
return user;
}
这段代码通过指定组织单元的路径获取用户对象。例如,如果获取名为 John
的用户对象,路径将类似于 LDAP://CN=John,DC=mydomain,DC=com
。
注意,此方法需要有 Active Directory 的读取权限。
在 .NET 3.5 和更高版本中,可以使用 System.DirectoryServices.AccountManagement
命名空间提供的 API 来获取 Active Directory 中的用户信息。以下代码演示了如何通过用户名获取用户对象:
using System.DirectoryServices.AccountManagement;
public static Principal GetUser(string username)
{
PrincipalContext context = new PrincipalContext(ContextType.Domain, "mydomain.com");
UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);
return user;
}
这段代码使用 UserPrincipal.FindByIdentity
方法搜索 Active Directory 中的用户。
如果你的应用程序使用 ASP.NET Identity 作为身份验证和授权机制,那么可以使用 ASP.NET Identity 提供的 API 来获取用户信息。以下代码演示了如何通过用户名获取用户对象:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
public static ApplicationUser GetUser(string username)
{
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
return userManager.FindByName(username);
}
这段代码使用 UserManager.FindByName
方法从 ASP.NET Identity 数据库中获取用户。请确保已正确配置数据库连接字符串和 ASP.NET Identity 相关设置。
无论你使用的是 System.DirectoryServices、System.DirectoryServices.AccountManagement 还是 ASP.NET Identity,都可以轻松地获取 Active Directory 或 ASP.NET Identity 中的用户信息。根据你的具体情况和需求,选择最适合你的方式并开始编码吧!