这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请查看Java语言更改以获取Java SE 9及后续版本中更新的语言特性的概述。
请查看JDK发行说明以了解所有JDK版本的新功能、增强功能以及已删除或弃用的选项的信息。
LDAP的“compare”操作允许客户端询问服务器是否具有指定条目的属性/值对。这使得服务器能够保持某些属性/值对的机密性(即,不公开供常规“搜索”访问),同时仍然允许客户端有限地使用它们。例如,某些服务器可能将此功能用于密码,尽管客户端在“compare”操作本身中传递明文密码是不安全的。
在JNDI中,可以使用以下方法的适当约束参数来实现此功能:
这里是一个导致使用LDAP的“compare”操作的示例
。
// 属性的值 byte[] key = {(byte)0x61, (byte)0x62, (byte)0x63, (byte)0x64, (byte)0x65, (byte)0x66, (byte)0x67}; // 设置搜索控件 SearchControls ctls = new SearchControls(); ctls.setReturningAttributes(new String[0]); // 不返回任何属性 ctls.setSearchScope(SearchControls.OBJECT_SCOPE); // 仅搜索对象 // 调用将使用LDAP的“compare”操作的搜索方法 NamingEnumeration answer = ctx.search("cn=S. User, ou=NewHires", "(mySpecialKey={0})", new Object[]{key}, ctls);
如果比较成功,结果枚举将包含一个名称为空且不包含任何属性的单个项。