jsp - 注销后如何保护我的帐户?

标签 jsp jakarta-ee servlet-filters logout back-button-control

我有一种情况 - 在我退出页面后,如果有人在浏览器中单击“返回”按钮,它会自动再次进入后退页面。在 Logout.java (Servlet) 中我使用:

session.invalidate();
request.getRequestDispatcher("index.jsp").forward(request,response);

一切正常。但是在注销后,如果我在浏览器中单击“返回”按钮(左上角),它就会回到原来的位置。我想做的是,如果我单击返回,则必须说您的 session 已过期或登录或其他内容。怎么做。请提出您宝贵的建议。
我刚刚读到这篇文章并创建了一个 servlet FilterURL.java:

public class FilterURL extends HttpServlet implements Filter {
    @Override
    public void init(FilterConfig config) throws ServletException {
    //
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
      HttpServletResponse hsr = (HttpServletResponse) res;
      hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
      hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
      hsr.setDateHeader("Expires", 0); // Proxies.
      chain.doFilter(req, res);
    }

    @Override
    public void destroy() {
    //
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //
    }
}

还有我的 web.xml:(在 web-app 下)

<filter>
    <filter-name>FilterURL</filter-name>
    <filter-class>com.filter.url.sys.FilterURL</filter-class>
</filter>
<filter-mapping>
    <filter-name>FilterURL</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

但它不会工作。我错了什么?
我是从这几页读到的:

  1. How to use a servlet filter in Java to change an incoming servlet request url?
  2. Prevent user from seeing previously visited secured page after logout
  3. http://tutorials.jenkov.com/java-servlets/servlet-filters.html
  4. servlet session , after logout , when back button of browser is pressed , again the secure page is shown

最佳答案

过滤器

HttpSession session = request.getSession(false);
                                 // don't create if it doesn't exist
if(session != null && !session.isNew()) {
    chain.doFilter(request, response);
} else {
    response.sendRedirect("/index.jsp");
}

参见 checking session in servlet and jsp

关于jsp - 注销后如何保护我的帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16193455/

相关文章:

java - 如何将输入文本的值传递给jsp变量?

javascript - 有没有办法可以继续执行 JSP 中的 Javascript,直到 Java 代码完全执行。

java - 如何在 jersey 1.11 过滤器中添加自定义响应和中止请求

使用 Request Dispatcher 的 Java Filter - 使用 JavaEE 6 Annotations

java - 是否可以使用 Sitemesh 直接在 JSP 中定义装饰器?

java - 在javascript中使用json对象在确认窗口中显示

jakarta-ee - Tomcat 和代理设置

java - 使用 Java Reflection 从对象列表中查找参数总和

java - 在测试和开发期间快速启动 JAX-RS 应用程序

jsf - 如何在过滤器中检索 FacesContext