Java EE登录页面问题

时间:2011-05-21 03:45:35

标签: java servlets login

我尝试编写一个登录表单,将用户名和密码传递给servlet并让用户登录。

然后,在servlet中,我好

request.login(username, password);

但它会抛出无法验证用户身份的异常。

String authType = request.getAuthType();
if(authType != null) {
request.login(username, password);
}
  1. 我想知道如何编写一个简单的登录页面。
  2. request.authenticate(response)的用途是什么;
  3. 我尝试了,它会弹出一个无法继续进行的屏幕。

    1. 我尝试引用此页http://download.oracle.com/javaee/1.4/tutorial/doc/Security5.html,我认为在登录之前需要首先配置身份验证并添加一些用户。
    2. 请帮忙。

      感谢。

1 个答案:

答案 0 :(得分:4)

HttpServletRequest#login()方法的使用表明您使用的是Servlet 3.0,它是Java EE 6的一部分。但您正在阅读一本有7。5年历史的J2EE 1.4教程。我建议把那个尘土飞扬的教程放在一边,然后阅读Java EE 6 tutorial。容器管理的安全性开始here

回到你的具体问题,login()将(as documented)在登录无效或容器没有任何 Realm 时抛出异常所有。假设您确定用户名/密码有效,则可能是最后一个原因。如何做到这一点完全取决于所讨论的servletcontainer。只需使用关键字“Realm”查阅其文档即可。例如,对于Tomcat 7.0,它是Realm Configuration HOW-TO。如果您在SQL数据库中有用户名/密码,则可能需要使用JDBCRealm

在servletcontainer级别配置 Realm 之后,您就可以按照自己的方式使用login()方法了。不要忘记根据Java EE 6教程向<security-constraint>添加web.xml以限制对某些URL模式的访问并指定登录页面的URL。