我想獲取當前登錄用戶的Employee-ID。在一些.Net類中很容易獲得,還是需要做某種LDAP查詢?我可以從WindowsPrincipal獲取Active Directory屬性嗎?
任何提示歡迎
我想獲取當前登錄用戶的Employee-ID。在一些.Net類中很容易獲得,還是需要做某種LDAP查詢?我可以從WindowsPrincipal獲取Active Directory屬性嗎?
任何提示歡迎
甚至更容易 - 使用新的.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();
}
結果從哪裏來? 「result = ds.FindOne();」 – 2013-07-23 12:12:59
是的,這很簡單。請注意它是UserPrincipal.EmployeeId 不是... ID 謝謝 – Graeme 2010-05-18 12:30:30
謝謝馬克,我正在尋找如何獲得用戶主體的Windows身份。在這裏我意識到,如果我有域名,我可以做到這一點,而無需對我的Windows Identity對象做任何事情。 – Veverke 2015-09-20 14:41:22