如何检查FORM Realm身份验证是否失败?

时间:2009-06-22 16:14:56

标签: tomcat authentication

我使用FORM身份验证。

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
       <form-login-page>/loginPage.jsp</form-login-page>
       <form-error-page>/loginPage.jsp</form-error-page>
    </form-login-config>                
</login-config>  

为了代码重用,我想为form-login-page和form-error-page使用相同的JSP。我使用了一个领域( org.apache.catalina.realm.JDBCRealm )。

在我的JSP中,如果身份验证失败,我想显示错误消息。 Realm是否在请求中存储了任何内容,我可以查看?

2 个答案:

答案 0 :(得分:1)

将参数添加到错误页面的网址:

<form-login-config>
    <form-login-page>/login.jsp</form-login-page>
    <form-error-page>/login.jsp?error=true</form-error-page>
</form-login-config>

在您的login.jsp中,检查是否发生错误并显示错误消息:

<c:if test="${not empty error}">
    <p class="error">Login failed. Please try again.</p>
</c:if>

此表单不允许您输出登录失败的任何具体原因。但是,安全方面的考虑已经使这样做成为一种不好的做法,所以这应该不是问题。例如。您不应该想要输出详细消息,例如“没有用户注册该名称”。或“用户X的密码错误”,因为这有助于攻击者闯入系统。

告诉他们登录失败。简单而好的安全实践,您还想要什么? :)

答案 1 :(得分:0)

我已经通过将错误页面通过http标头重新定向到登录页面并使错误页面包含javascript来在错误下方的iframe中打开登录来完成此操作。