【问题标题】:j_security_check redirectj_security_check 重定向
【发布时间】:2012-03-20 15:58:35
【问题描述】:

我正在 Tomcat 环境中学习 Java servlet。我正在学习如何使用 j_security_check 使用基于表单的登录身份验证。因此,在我的 servlet 中,我有一个包含 j_username 和 j_password 的登录页面。在该 servlet 的 web.xml 文件中,我有一个欢迎页面列表,指示我的登录页面“landing.html”。所以,理想情况下,成功登录后,我希望用户被重定向到“landing.html”页面。

没有身份验证(没有基于表单的身份验证),我的 servlet 打开并按预期进入“landing.html”页面(“localhost:8080/MyServlet” - 显示landing.html 的内容)。

但是,现在,在使用 j_security_check 成功登录后,出于某种原因,我会自动重定向到“landing.html”文件的 .css 文件。我不明白为什么会这样。

有没有一种特殊的方法可以告诉服务器在成功验证后只加载“landing.html”页面而不将其转发到其他任何地方?

编辑

*好的,我解决了。 成功验证后加载的 css 文件列在 j_username 和 j_password 所在的 login.html 页面的 <head></head> 标记中。我添加了该 css 文件以使登录页面的设计与网站的其余部分保持一致。我的猜测是,当服务器重新加载所需资源时,出于某种原因,它只是从 head 标签重新加载顶部的 css 文件。 真奇怪。 那么,j_security_check 是对 Tomcat 上的网站进行任何身份验证的最佳方法,还是有更好、更可靠的方法?*

【问题讨论】:

    标签: java servlets j-security-check


    【解决方案1】:

    基于表单的身份验证的行为如下:

    • 浏览器向受保护的 URL 发送请求
    • 服务器拦截其请求,发现您未通过身份验证,并重定向到 loginf 表单页面
    • 用户登录
    • 服务器重定向到触发身份验证的 URL:第一步中询问的受保护 URL。

    这很好,因为它允许用户为受保护的页面添加书签,第二天返回此已添加书签的页面,登录,然后直接转到已添加书签的页面而不是欢迎页面。

    我的猜测是着陆页是不受保护的,但它的 CSS 文件是。所以触发认证的请求是尝试加载CSS文件的请求,导致用户被重定向到CSS文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-05
      • 2016-05-25
      • 2011-09-02
      • 2018-10-01
      • 2015-09-18
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      相关资源
      最近更新 更多