java - Servlet 过滤器重定向,url 未更改

标签 java session servlets servlet-filters

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

这是我的过滤器:

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

最佳答案

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

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

  2. Send Redirect : 发起新请求(New Url)

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

关于java - Servlet 过滤器重定向,url 未更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526672/

相关文章:

java - GWT RPC - 每个应用程序多个 RPC 服务

java - 附加到 StringBuffer (Java Servlet) 未作为 Servlet 中的属性获取

java - 虽然循环适用于交互 Pane ,但不完全适用

java - 焊接-001408 : Unsatisfied dependencies for type ServiceLocator with qualifiers @Default

java - 在 JAVA 中删除列表中的所有 10 并在列表末尾附加相同数量的 0

java - 尝试在我的java代码中打印数组

node.js - 两个本地 Node.js 服务器上的 session

session - AngularJS:无法读取 session 值

java - 在 Web pojo 类中使用 ejb session 时获取 null

json - 当我期望 JSON 时得到 "XML Parsing Error: not well-formed"