Как мне выполнить запросы диапазона на LDAP - PullRequest
1 голос
/ 15 января 2010

Я пытаюсь получить данные о группах по LDAP. Поскольку мне нужно разбивать результаты на страницы, мне нужно выполнять запросы диапазона. Моя установка использует JNDI для подключения к LDAP. Я пытаюсь выполнить этот запрос

 (&(objectclass=group)(range=1-500))

Что я делаю не так? Я знаю, что существуют запросы на основе диапазона для LDAP, как мне изменить этот запрос, чтобы получить то же самое?

Ответы [ 3 ]

4 голосов
/ 16 января 2010

Ну, пейджинг - это одно, а диапазон - другое. Вы просматриваете результаты, полученные с сервера LDAP, когда существует более 1000 записей (по крайней мере, это по умолчанию в Active Directory).

MSDN имеет статью о том, как выполнять постраничный поиск в .NET ; надеюсь, вы сможете перевести это в вашу среду.

Диапазон что-то другое . Диапазон используется, когда у вас есть атрибут с несколькими значениями (обычно атрибут member для группы), который имеет большое количество значений. Таким образом, вы не можете иметь диапазон в запросе. Вам нужно указать диапазон при доступе к атрибуту с несколькими значениями (тогда вместо простого указания member в коде доступа к значению свойства, которое вы укажете member;range=1-500, чтобы получить первые 500 значений из этого многозначного атрибута).

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

Вместо элемента управления Simple Paging вы можете рассмотреть возможность использования элемента управления Virtual List View, если у вас AD версии 2003 или выше. Виртуальный список обеспечивает расширенные возможности сортировки результатов и дает вам больше возможностей для управления подмножеством набора результатов поиска.

1 голос
/ 16 июня 2015

Это то, как вам нужно запросить, чтобы получить результаты

int start = 0;
int step = 1500;
int finish = 1499;
boolean finished = false;
String range;

String returnedAtts[] = {"member;Range=" + range};
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = readableDirContext.search(searchDN, searchFilter, searchCtls);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...