我有一个查询看起来是这样的:LDAP搜索失败
(|(mail=andrew*)(cn=andrew*)(sn=andrew*)(telephoneNumber=andrew*))
即它需要一个搜索词从UI并寻找对抗项的比赛*跨越一堆属性。
用户输入安德鲁在这种情况下和应用程序增加了通配符。如果用户输入andrew`(拖尾),应用程序会查找andrew` *。
我注意到,如果telephoneNumber包含在搜索的属性中,查询将失败,并返回一个javax.naming.InvalidAttributeValueException,如果它被排除,那么查询的工作没有错误。
我不是在单独的反引号特别感兴趣,但因为它不是在LDAP搜索一个特殊字符我不知道为什么我得到这个行为,如果其他字符都将产生类似的结果。如果我能弄清楚如何查询它,或者它会是别的什么,那么在模式中是否会有解释这一点的东西?
如果它的事项,通过弹簧库中的Java应用程序访问。
谢谢,这看起来不错。不推荐使用的API看起来是正在使用的API,这可能解释了为什么这个问题尚未得到处理? – rich
在这种特殊情况下,无论如何您都必须小心谨慎,因为在与telephoneNumber进行匹配时,返回打勾无效。这是**不由库处理,因为我们可以做的最好的方法是抛出类似的异常,如果属性语法被违反。该库只处理不安全字符的转义。对于这些类型的属性,无论如何您都需要对输入进行清理,这肯定会让人感到痛苦,但对于电话号码,您可以轻松地用空格替换所有非数字字符并使用WhitespaceWildcardsFilter。 – marthursson