Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Glassfish JDBCRealm登录异常_Java_Jsp_Jakarta Ee_Glassfish_Jdbcrealm - Fatal编程技术网

Java Glassfish JDBCRealm登录异常

Java Glassfish JDBCRealm登录异常,java,jsp,jakarta-ee,glassfish,jdbcrealm,Java,Jsp,Jakarta Ee,Glassfish,Jdbcrealm,我在带有oracle11的glasfish 3.1中有一个JDBCRealm设置。我的web应用程序身份验证工作正常,但现在我希望能够在有人连续三次登录失败时做出反应。查看我的服务器日志,我可以看到每次登录失败时都会记录一个异常: WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception 你

我在带有oracle11的glasfish 3.1中有一个JDBCRealm设置。我的web应用程序身份验证工作正常,但现在我希望能够在有人连续三次登录失败时做出反应。查看我的服务器日志,我可以看到每次登录失败时都会记录一个异常:

WARNING: WEB9102: Web Login Failed:
com.sun.enterprise.security.auth.login.common.LoginException: 
Login failed: Security Exception
你们知道在我的java代码中以编程方式捕获它的方法吗?我试着用谷歌搜索,但没有用

或者你知道一个更好的解决方案?请分享

谢谢, 达莫

更新:
我需要重新表述这个问题(或者适当地解释情况)。每次身份验证失败时,我都要将其记录到数据库中。为此,我需要用户名、时间戳等。每次身份验证失败时,系统将检查失败计数,如果超过3,则将锁定用户帐户。因此,我可以在loginerror.jsp中执行此操作,但我需要用户名。在任何地方都找不到:)。到目前为止,我尝试了一个过滤器,但它似乎不能在j_security_check url模式上进行过滤(至少在glassfish 3.1中不能)。实际上,这里的主要问题是将登录失败的人的用户名传递到loginerror.jsp(以任何形式:属性、参数等)。我们将尝试一些java脚本和表单提交。。呵呵。谢谢。

只有将登录信息拿在手中,您才能看到它。您不需要将表单提交到
j_security_check
,而需要提交到使用的servlet


我认为您可以在web.xml中指定表单错误页面

您可能可以在那里指定一个servlet,将用户重定向到您想要显示的页面


形式
文件
/login.xhtml
/error.xhtml

很公平,但我必须坚持表单登录。我在考虑也许要安排一个听众。回到谷歌:)。谢谢您无法在
j_security_check
请求上注册筛选器/侦听器。如果我将url模式指定为“/*”,我可以筛选j_security_check。但一旦我将url模式更改为“/j_security_check”,它就会失败,即不进行过滤。grrr..:D哦,好吧。他想处理连续3次登录失败的情况,而不是处理“a”登录失败(我觉得他已经知道:)。是的,但他可能可以在注册为表单错误页面的Servlet中这样做,例如:增加此会话的错误计数器,检查是否低于3,如果是,请直接转到错误页面1,否则转到错误页面2。是的,错误jsp很好,这就是我打算做的:-),但请参阅我对上述问题的更新。谢谢
try {
    request.login(username, password);
} catch (ServletException e) {
    // Handle.
}
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/error.xhtml</form-error-page>
    </form-login-config>
</login-config>