首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glassfish JDBCRealm登录异常

Glassfish JDBCRealm登录异常
EN

Stack Overflow用户
提问于 2011-04-01 21:20:40
回答 2查看 4K关注 0票数 1

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

代码语言:javascript
复制
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-patter上进行过滤(至少在glassfish 3.1中不能)。所以实际上,这里的主要问题是将登录失败的人的用户名传递给loginerror.jsp (以任何形式:属性、参数或其他任何形式)。我将尝试一些java脚本和表单提交..哈哈。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-01 21:40:53

只有把登录信息拿在手中才能抓到它。您需要提交给使用HttpServletRequest#login()的servlet,而不是将表单提交给j_security_check

代码语言:javascript
复制
try {
    request.login(username, password);
} catch (ServletException e) {
    // Handle.
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-01 21:48:27

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

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

http://download.oracle.com/docs/cd/E19798-01/821-1841/bncas/index.html#6nmq2cpkm

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5513957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档