forms - 基于 Tomcat FORM 的身份验证,在每个页面上

标签 forms tomcat web.xml

我想在每个页面上(在页面的标题中)使用身份验证表单,以便用户可以从任何页面进行身份验证。 我正在使用 Tomcat 的基于表单的身份验证,但是当我转到我的索引页面并尝试使用标题中的表单登录时,我得到:

HTTP 400 - Invalid Direct Reference To Login Page

有没有我可以使用的解决方法,也许是 web.xml 中的一些设置来解决这个问题?

编辑: 这是 header 的登录表单:

<form method="post" action="j_security_check">
     <input type="text" name="j_username" class="login"/>
     <input type="password" name="j_password" class="login"/>
     <input type="submit" value="Login"/>
</form>

最佳答案

Tomcat 基于表单的身份验证概念是拦截对 protected 页面的未经身份验证的请求,并在内部重定向到单独的登录页面。它还保存了原始页面请求。用户成功登录后,将重放原始页面请求并显示 protected 页面。

据我从您的简短描述中得出的结论,您想要实现的是不同的东西。基本上,您的所有页面都是公开的。 (可选)用户可以登录,然后将获得个性化页面。

Tomcat 不会帮助您实现这一点。当您使用 j_security_check 操作时,它将无法执行任何操作,因为它从一开始就从未拦截过请求。

相反,如果提交了登录表单,您自己检查用户名和密码可能会更容易。如果他们没问题,只需将用户名放入您的 session 数据中。经过身份验证的 session 很容易被识别,因为它在 session 数据中包含用户名。

甚至可能有一种方法可以重用 Tomcat 领域,例如能够根据数据库检查用户名和密码。但我不确定。

关于forms - 基于 Tomcat FORM 的身份验证,在每个页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162616/

相关文章:

php - 在表单中预先格式化的数字/货币显示和存储不正确的值

java - 找不到 Tomcat 7 404 intelliJ 资源

jsf - *.xhtml url-pattern 在 com.sun.faces.context.flash.ELFlash.loggingGetPhaseMapForReading 导致 java.lang.NullPointerException

javascript - 如何使用 Javascript/JQuery 判断单选按钮是否处于未选中状态

python - 上传文件在 Django 中无法正常工作

forms - 使用 VBA 模块从 Access 中的表单中获取文本值

apache - 在 tomcat 部署时自动启动 Web 应用程序

tomcat - Nginx 重定向到本地主机 :8080 after userlogin to website

java - Weblogic到tomcat迁移性能问题

session - java中 session 超时删除cookie