j_security_check重定向

6
我正在Tomcat环境下学习Java servlets。我正在学习如何使用基于表单的登录认证,使用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”页面,而不是将其转发到其他任何位置?
编辑
好的,我解决了。在登录.html页面中,j_username和j_password处,加载的css文件列在标签内。我添加了该CSS文件,使登录页面的设计与网站的其余部分一致。我的猜测是当服务器重新加载所需资源时,由于某种原因它只是重新加载来自head标记的顶部CSS文件。真的很奇怪。
那么,j_security_check是在Tomcat上进行网站身份验证的最佳方法,还是有更好更可靠的方法?
1个回答

11
表单身份验证的行为如下:
  • 浏览器发送请求到受保护的URL
  • 服务器拦截该请求,发现您未经过身份验证,并重定向到登录表单页面
  • 用户登录
  • 服务器重定向到引发身份验证的URL:即在第一步中请求的受保护的URL。
这很好,因为它允许用户将受保护的页面添加为书签,第二天回到此书签页,登录并直接进入书签页,而不是欢迎页面。
我猜着陆页面不是受保护的,但其CSS文件是受保护的。因此,触发身份验证的请求是尝试加载CSS文件的请求,这会导致用户被重定向到CSS文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接