gpt4 book ai didi

spring - 通过多个属性搜索 LDAP 模板

转载 作者:行者123 更新时间:2023-12-02 04:17:31 24 4
gpt4 key购买 nike

尝试使用用户 ID、电子邮件 ID、名字、姓氏、GUID 等搜索用户详细信息...将来需要添加更多值

应使用所有不为空的属性来执行搜索。网上找到了这段代码*

String filter = "(&(sn=YourName)(mail=*))";

*是否有任何其他预定义的模板或类似的模板来进行搜索,更优化的方式,而无需直接将值指定为 Null 或对每个属性使用 if else 语句?所有值都必须传递给该方法,并且那些不为空的值必须用于使用 LDAP 进行搜索。任何事物?请帮忙。

最佳答案

您可以在运行时有效地使用过滤器来指定用于搜索的内容和不用于搜索的内容,具体取决于某些规则或属性上的 NULL 验证。请找到使用 ldapTemplate 中的过滤器获取人名的示例代码:-

public static final String BASE_DN = "dc=xxx,dc=yyy";
private LdapTemplate ldapTemplate ;
public List getPersonNames() {
String cn = "phil more";
String sn = "more";
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person"));
filter.and(new EqualsFilter("sn", sn));
filter.and(new WhitespaceWildcardsFilter("cn", cn));
return ldapTemplate.search(
BASE_DN,
filter.encode(),
new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("cn").get();
}
});
}

顾名思义,AndFilters 连接了查找中使用的所有单独过滤器,例如 EqualFilter,它检查属性的相等性,而 WhitespaceWildcardsFilter 则执行通配符搜索。因此,就像我们得到 cn = phil more 一样,它又使用 *phil*more* 进行搜索。

关于spring - 通过多个属性搜索 LDAP 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32776541/

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