2012-03-02 71 views
5

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

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

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

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

编辑

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

回答

10

基于表单的认证的行为如下:?

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

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

我的猜测是登陆页面是不是保护,但它的CSS文件是。因此,触发验证的请求是尝试加载CSS文件的请求,导致用户被重定向到CSS文件。