j_security_check重定向

时间:2012-03-02 05:20:54

标签: java servlets j-security-check

我正在学习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文件的.css文件。我不明白为什么会这样。

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

修改

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

1 个答案:

答案 0 :(得分:10)

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

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

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

我的猜测是着陆页不受保护,但其CSS文件是。因此,触发身份验证的请求是尝试加载CSS文件的请求,这会导致用户被重定向到CSS文件。