我有一个Java / Tomcat应用程序,当用户访问主页时为他们创建一个cookie。此cookie用于在后续访问中识别该用户并生成最近的列表。这些都运行良好,到目前为止,没有使用Tomcat本身的任何类型的用户身份验证。这让我想到了我的问题:
在我的应用程序的某些页面上,用户可以选择发布评论或保存创建的内容,当然还可以维护他们的个人资料。因此,我要做的是让用户在这些页面上登录,以便可以执行相关操作,例如,如果发布评论,则用户必须首先从当前页面登录,该页面不是专门用作登录页面,而是显示创建的内容。或者,要访问配置文件页面,必须已进行登录。然后我可以在会话变量中记录登录信息。
但是当我尝试登录Tomcat时,我收到消息“对表单登录页面的无效直接引用”,但不太明白为什么。在我的页面中,我使用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 :(得分:0)
当您在web.xml文件中设置<security-constraint>
时,如果您尝试实现未登录的“安全”页面,容器会自动将您重新启动到登录页面。在登录页面中,您必须输入登录信息并继续请求。成功登录后,您将重定向到安全页面。
但是当您尝试从登录页面本身登录时,您将收到错误“对表单登录页面的无效直接引用”。由于容器在成功登录后不会到达应重定向的位置。
在您的情况下,可能更容易编写自己的ServletFilter