2010-02-15 2 views
2

У меня проблемы с фильтрами поиска ldap. Я хочу выполнить поиск по всем дочерним элементам корневого узла. Я хочу, чтобы пользователи, у которых имя пользователя электронной почты содержит строку запроса. , например, если у меня естьldap фильтр поиска с java

и поисковый запрос «ЖХ» Я хочу только [email protected] .com

следующий код, неожиданно, возвращает либо первый, либо второй.

String query = "..."; 
DirContext dc = ...; 
NamingEnumeration<SearchResult> ne = dc.search(root, 
    "(email=*{0}*@*)", 
    new Object[] { query }, null); 

что не так в поле фильтра "*...*@*"?

ответ

1

Я не могу дать вам полный ответ, но если вы попробуете ldapsearch из командной строки с фильтром "(email=*l.c*@*)", вы должны получить нужные записи ... поэтому я бы сказал, что проблема заключается в методе Java, а не в фильтр.

Надеюсь, это может вам помочь.

+0

к сожалению ATM не имеют Linux-машина с установкой ldapsearch. Единственный менеджер ldap, который у меня есть, - JXplorer, который возвращает все записи, а не только нужные. AFAIK написано в самой Java, поэтому я не знаю, это он или я. –

0

Я предполагаю, что вы забыли вставить код, отформатировавший ваш запрос и его параметр {0}? Редактировать: wow, забудьте меня, я даже не знал о методе, который принимает массив filterArgs.

В качестве примечания, стандартный атрибут адреса электронной почты в InetOrgPerson является «почта» не «электронная почта» (но это может отличаться на вашем случае конечно)

Смежные вопросы