我尝试编写一个登录表单,将用户名和密码传递给 servlet 并让用户登录。
然后,在 servlet 中,我 lo
request.login(username, password);
但它会抛出无法验证用户身份的异常。
String authType = request.getAuthType();
if(authType != null) {
request.login(username, password);
}
- 我想知道如何编写一个简单的登录页面。
- request.authenticate(response) 的用途是什么;
我试过了,它弹出了一个无法再继续的屏幕。
- 我尝试引用此页面 http://download.oracle.com/javaee/1.4/tutorial/doc/Security5.html我认为需要在登录之前先配置身份验证并添加一些用户。
请帮忙。
谢谢。
最佳答案
使用 HttpServletRequest#login()
方法表明您正在使用 Servlet 3.0,它是 Java EE 6 的一部分。然而您正在阅读 7.5 年前的 J2EE 1.4 教程。我建议把那个尘封已久的教程放在一边,阅读 Java EE 6 tutorial反而。容器管理安全启动here .
回到您的具体问题,login()
当登录无效或容器根本没有定义任何 Realm 时,将 ( as documented ) 抛出异常。假设您确定用户名/密码有效,这可能是最后一个原因。具体如何做取决于所讨论的 servletcontainer。只需使用关键字“Realm”查阅其文档。例如,对于 Tomcat 7.0,这是 Realm Configuration HOW-TO .如果您在 SQL 数据库中拥有用户名/密码,您可能希望使用 JDBCRealm .
一旦您在 servletcontainer 级别配置了一个 Realm,您就可以使用 login()
方法你想要的方式。不要忘记添加 <security-constraint>
到 web.xml
根据 Java EE 6 教程限制对某些 URL 模式的访问并指定登录页面的 URL。
关于Java EE 登录页面问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079469/