2010-09-22 54 views
0

我有一个Java/Tomcat应用程序,它为用户访问主页时创建一个cookie。该cookie用于在后续访问中识别该用户并生成最近的列表。这些工作正常,迄今没有任何使用Tomcat本身的用户身份验证。这使我想到我的问题:问题登录到Tomcat

在我的应用程序的某些页面上,用户可以选择发表评论或保存创建的内容,当然也可以维护他们的配置文件。所以我想要做的是让用户在这些页面上登录,以便相关的操作可以被执行,例如,如果发布评论,用户必须首先从当前页面登录,该页面并非专门用作登录页面,而是显示已创建的内容。或者要访问配置文件页面,必须已经登录。然后,我可以在会话变量中记录登录。

但是当我尝试登录到Tomcat时,我收到消息'Invalid direct reference to form login page',但不太明白为什么。在我的网页,我使用Tomcat提供的登录代码,即:

<div id = "login"> 
     <form method = "POST" action='<%= response.encodeURL("j_security_check") %>' > 
      <table border="0"> 
       <tr> 
        <th align = "right">Username</th> 
        <td align = "left"><input type="text" name="j_username"></td> 
       </tr> 
       <tr> 
        <th align = "right">Password</th> 
        <td align = "left"><input type="password" name="j_password"></td> 
       </tr> 
       <tr> 
        <td align = "right"><input type="submit" value="Log In"></td> 
        <td align = "left"><input type="reset"></td> 
       </tr> 
      </table> 
     </form> 
    </div> 

我使用默认的登录页面提供HTML iframe也试过,但出现了同样的信息。我想要的是登录按照上面的方式工作,验证用户,然后将用户返回到页面。

有人能够建议吗?我是否需要在Tomcat或其他地方使用领域?

我正在使用Tomcat 6.X.

谢谢

摩根先生。

回答

0

当您在您的web.xml文件中设置<security-constraint>时,如果您尝试实现未登录的“安全”页面,容器会自动将您重新登录到登录页面。在登录页面中,您必须输入登录名和密码继续请求。成功登录后,您将被重定向到安全页面。

但是,当您尝试从登录页面本身登录时,您将收到错误“无效的直接引用到表单登录页面”。由于容器未成功登录后应将其重定向到的位置。

也许在你的情况比较简单写你自己ServletFilter中

+0

这样的Servlet过滤器将只需要读取包含用户信息的数据库表,并采取相应的行动?还是在这里需要更多? – 2010-09-22 12:51:19