我花了两天时间构建了一个在 LDAP 中管理用户的 Ruby on Rails 应用程序。在微调各种属性的包含和格式时,我经常会ldap.add()
失败,除了可能引发异常之外几乎没有反馈。我通常知道这是一个数据验证错误,例如缺少必需的属性或格式错误的属性值——但我在服务器 (Apache DS) 或客户端上找不到任何可以指示哪个字段失败或失败原因的信息失败。
那么...您如何看待LDAP 添加(或替换、删除、打开...)失败的原因?
然后我偶然发现ldap.get_operation_result
,我有一个真正的面部护理时刻。我故意get_operation_result
在我的武器库中重新创建了我通过仔细检查痛苦地解决的几个问题,并且每次它都准确地描述了问题所在。
此函数在挽救异常的情况下很有用,或者如果 add()、modify()、delete() 等简单地返回 false。
ldap.add(dn: dn, attributes: attributes)
Rails.logger.info("ldap.add: #{ldap.get_operation_result}")
上面的片段挽救了我的理智,更不用说数小时的繁琐的狩猎和啄食测试了。
例如,这只是一条错误消息的一部分,它显示我没有提供必需的sn
属性:
ERR_279 Required attributes [sn(2.5.4.4)] not found within entry uid=david,o=users,dc=example,dc=com"
它还将显示与错误的服务器连接凭据等相关的消息。
高温高压