4

我的身份验证过滤器有问题。当过滤器重定向到登录页面时,所有以前的页面(主页面)都显示在登录页面中。如果我手动进入登录页面,它工作正常。

这是我的过滤器:

    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 保持不变。主要问题是我从登录页面的其他页面获取内容。我不知道问题出在哪里。

4

3 回答 3

4

在浏览器中更改 URl 不取决于过滤器,但取决于您如何调用页面/servlet。您可以通过两种方式调用您的 servlet/jsp

  1. RequestDispatcher : 将控制权转移给同一请求下的其他人(相同的 URL)

  2. 发送重定向:发起一个新的请求(新的 URL)

    注意:过滤器所做的只是对请求的验证

于 2013-08-31T10:40:16.790 回答
0

您传递的 loginURL 的值是多少。发送相对路径。

于 2013-08-30T07:18:48.987 回答
-2

I was having the exact same problem. The real problem is that I and you both forgot to add the following line:

response.setContentType("text/html");

After adding this line my redirect works fine. Before this my servlet will stay on the same page with a blank page (because nothing has been written to the response oputput stream).

Hope this may help others who is having this problem. It took me some painful minutes before test this possibility.

于 2014-06-21T16:30:31.787 回答