Я хотел бы добраться, идентификатор сотрудника для в настоящее время входил в систему пользователь. Это легко доступно в некотором классе .NET, или я должен сделать своего рода запрос LDAP?
Любые приветствующиеся подсказки
Еще проще - используйте новые возможности .NET 3.5 System.DirectoryServices.AccountManagement
.
Подробности см. в статье MSDN Managing Directory Security Principals in the .NET Framework 3.5.
PrincipalContext ctx = new PrincipalContext(ContextType.Domain. "YOURDOMAIN");
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName);
if(user != null)
{
string empID = user.EmployeeId;
}
Новые сильно типизированные классы принципалов упрощают работу с AD.
Используемый запрос AD - очень просто:
DirectorySearcher ds = new DirectorySearcher();
ds.PropertiesToLoad.Add("employeeID");
ds.Filter = String.Format("(&(objectCategory=person)(sAMAccountName={0}))", loginName);
result = ds.FindOne();
if (result != null)
{
personnelNumber = result.Properties["employeeID"][0].ToString();
}