ldap фильтр поиска с Java - PullRequest
       16

ldap фильтр поиска с Java

2 голосов
/ 15 февраля 2010

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

  • foo_l.c_bar@foobar.com
  • foobar@foo_l.c_bar

и поисковый запрос "l.c". Я хочу только foo_l.c_bar@foobar.com

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

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

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

Ответы [ 2 ]

1 голос
/ 15 февраля 2010

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

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

0 голосов
/ 09 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...