[英]Passing errors through login-config to form-error-page with JBOSS
我正在使用JBOSS 4.2的公司应用程序中进行更正。
更改位于登录页面。 我们使用login-config通过LDAP连接到AD服务器。
工作正常,但是问题在于用户帐户已过期或AD脱机或其他原因,用户将看到一个错误页面,描述“用户名/密码无效”,因为login-config方法返回的布尔值仅表示是否连接。
以下是实际的登录配置
<login-module code="org.jboss.security.auth.spi.LdapLoginModule" flag="requisite">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option>
<module-option name="java.naming.provider.url">ldaps://XXXXX</module-option>
<module-option name="java.naming.security.authentication">simple</module-option>
<module-option name="allowEmptyPasswords">false</module-option>
<module-option name="principalDNPrefix">XXX</module-option>
<module-option name="principalDNSuffix">,XXXXX</module-option>
<module-option name="matchOnUserDN">true</module-option>
</login-module>
和网络安全xml
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login.jsp?invalidLogin=true</form-error-page>
</form-login-config>
</login-config>
问题是:我想向用户显示如果发生错误(例如,如果他的帐户处于非活动状态)发生了什么,我不想显示“用户名/密码无效”
我制作了一个自定义类来处理login-config,这里称为Login,然后进行更改
<login-module code="package.Login" flag="requisite">
这样我可以获得LDAP错误,但是我无法传递到登录错误页面,因为有效登录的方法是布尔值:
JBOSS调用以验证凭据的方法下面:
/** Validate the inputPassword by creating a ldap InitialContext with the
SECURITY_CREDENTIALS set to the password.
@param inputPassword the password to validate.
@param expectedPassword ignored
*/
protected boolean validatePassword(String inputPassword, String expectedPassword)
{
}
最后,可以将自定义错误消息返回到登录表单错误吗? 可能是一种解决方法,因为我已经阅读过login-config没有提供执行此操作的标准方法。
我已经做过一次,但是似乎找不到代码片段了。 我记得,如果密码检查失败,我必须调用getValidateError()
。
遵循以下原则
if ( validatePassword( pwd, null ) )
{
// yeah
}
else
{
Throwable e = getValidateError();
// Now you can query the throwable for the cause and message
}
让我知道这是否没有帮助您;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.