【发布时间】:2012-01-06 06:21:32
【问题描述】:
尝试使用过期密码登录 ldap 服务器时,日志记录中会引发异常。
javax.naming.AuthenticationException:[LDAP:错误代码 49 - 80090308: LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext 错误,数据 773,v1db0
我想给用户一个相应的消息,但我无法捕捉到那个异常。 (我怎样才能得到日志中显示的异常?因为 data 773 表示密码已过期
CallbackHandler handler = new UsernamePasswordHandler(
username, password);
LoginContext lc = new LoginContext(applicationPolicyName,
handler);
try {
lc.login();
} catch (Exception){
log.warn(e.getMessage());
}
【问题讨论】:
-
注意:日志中的异常不是由 log.warn(e.getMessage());
-
不使用 JNDI 的众多原因之一,它很奇怪,违反直觉,并且难以处理简单的事情,例如超出结果代码的大小限制、超出结果代码的时间限制和其他类似的非常基本的LDAP 主题。我建议开发人员不要将 JNDI 用于新代码,而是更喜欢 UnboundID LDAP SDK。标准版可免费使用。另外,您可能对LDAP: Programming Practices感兴趣。