2015-06-08 114 views
1

我正在C#中使用LDAP目錄服務以使用某些篩選條件從LDAP中搜索用戶。我想提供多個OR過濾標準。例如firstName,lastName,telephone等。當我提供所有過濾器值時它工作正常,但當我提供一個或兩個過濾器值時會出錯。Active Directory LDAP搜索篩選器或運算符語法

這裏是我使用的示例代碼:

var LdapSearcher = new DirectorySearcher(RootDomain, 
        "(&(objectclass=user)(sn=" + lastName.Trim() + ")(givenName=" + firstName.Trim() + "))"); 

我得到的結果,當我同時提供SN和給定名稱值。但是,這是一個OR搜索,用戶將輸入lastName或FirstName。

如何在LDAP DirectorySearcher中應用OR過濾器。

+0

'&''等於'和'|''等於做或'谷歌搜索..其實有很多例子在線上如何做到這一點..如果你想,甚至更簡單的方法..谷歌PrincipalContext的例子以及與C# [ActiveDirectory:LDAP語法](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap -syntax-filters.aspx) – MethodMan

回答

2

您需要使用|運算符。從您提供的是什麼,你的條件是:

  • objectclass必須等於「用戶」
  • sn OR givenName必須等於所提供的值

假設用戶提供了名字「約翰史密斯」。你的過濾器應該是這樣的:

(&(objectClass=user)(|(sn=Smith)(givenName=John)))

+0

感謝您的迴應。現在正在工作。 –

+0

優秀,沒問題 - 隨時將其標記爲已接受的答案。 – X3074861X