我的身份验证过滤器出现问题。当过滤器重定向到登录页面时,所有上一页(主页面)都显示在登录页面中。 如果我手动进入登录页面,它可以正常工作。
这是我的过滤器:
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
String loginURL = req.getContextPath() + SiteMap.LOGIN_CONTROLLER;
boolean sessionCreated = session != null && !session.isNew();
if (sessionCreated)
{
chain.doFilter(request, response);
}
else
{
res.sendRedirect(loginURL);
}
我还注意到,当过滤器重定向到登录页面时,浏览器栏中的URL保持不变。主要问题是我从登录页面的其他页面获取内容。 不知道问题出在哪里。
答案 0 :(得分:2)
在浏览器中更改URl并不依赖于过滤器,但这取决于您调用页面/ servlet的方式。您可以通过两种方式调用servlet / jsp
RequestDispatcher:在同一请求下将控件转移给其他人(相同网址)
Send Redirect:发起新请求(新网址)
注意:所有过滤器都会对请求进行验证
答案 1 :(得分:0)
您传递的loginURL的价值是多少?发送相对路径。
答案 2 :(得分:-1)
我遇到了完全相同的问题。 真正的问题是我和你们都忘记添加以下行:
response.setContentType("text/html");
添加此行后,我的重定向工作正常。在此之前,我的servlet将继续使用 带有空白页面的同一页面(因为没有任何内容写入响应oputput流)。
希望这可以帮助其他有这个问题的人。在测试这种可能性之前,我花了一些痛苦的时间。