gpt4 book ai didi

LDAP AD - 范围属性,如何使用?

转载 作者:行者123 更新时间:2023-12-01 11:10:01 25 4
gpt4 key购买 nike

我正在尝试使用 range 属性。

为了测试,我使用没有范围返回 3 个条目的搜索,并将范围设置为 0-1,这应该只返回前 2 个。但是,我得到了所有 3 个结果。

这就是我的做法:

String rangeStr = attribute + ";range=0-1";
String returnedAttrs[] = {rangeStr, attribute};
_searchControls.setReturningAttributes(returnedAttrs);
_searchControls.setSearchScope(scope);
NamingEnumeration<SearchResult> answer = _context.search(name, filter, _searchControls);
List<String> result = new LinkedList<String>();
while (answer != null && answer.hasMoreElements())
{
Attribute currentAttr = answer.next().getAttributes().get(attribute);
if (currentAttr == null)
continue;
for (int i=0; i<currentAttr.size(); i++)
{
String val = currentAttr.get(i).toString();
result.add(val);
}
}

我究竟做错了什么?

我使用 1000 的页面大小,但如果我理解正确,这不应该影响范围搜索(假设页面大小大于请求的范围)。那是对的吗?

最佳答案

#!/usr/bin/env python

import ldap

def msad_flatten_ranges(conn, dn, ldap_dict):
for attrname in ldap_dict:
if ';range=' in attrname:
#
# parse range attr
#
actual_attrname, range_stmt = attrname.split(';')
bound_lower, bound_upper = [
int(x) for x in range_stmt.split('=')[1].split('-')
]

step = bound_upper - bound_lower + 1
while True:
attr_next = '%s;range=%d-%d' % (
actual_attrname, bound_lower, bound_upper
)

dn, attrs = conn.search_s(
dn, ldap.SCOPE_BASE, attrlist = [attr_next])[0]

assert len(attrs) == 1

ret_attrname = attrs.keys()[0]

ldap_dict[actual_attrname].extend(attrs[ret_attrname])
if ret_attrname.endswith('-*'):
break

bound_lower = bound_upper + 1
bound_upper += step

关于LDAP AD - 范围属性,如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1000541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com