注销后通过缓存的URL或后退按钮禁用页面访问(Servlet)

时间:2017-04-24 08:33:03

标签: java servlets servlet-filters logout session-state

要求:

我正在我的网络应用程序(基于Servlets-JSP)中实现安全注销功能,即在注销后,用户不能通过从Cache中键入url或点击浏览器上的后退按钮来访问任何页面,应用程序应重定向到登录页面。

我做了什么:

根据一些阅读和一些SO答案,我开始使用过滤器实现此功能,这就是我所做的。

web.xml中的

<filter>
    <filter-name>NoCacheFilter</filter-name>
    <filter-class>com.controller.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>NoCacheFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在我的Filter类doFilter()方法

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
     HttpServletResponse response = (HttpServletResponse) servletResponse;
     HttpServletRequest request=(HttpServletRequest) servletRequest;

     response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
     response.setHeader("Pragma", "no-cache");
     response.setDateHeader("Expires", 0); 

     HttpSession session=request.getSession(false);

     if(session != null && !session.isNew()) {
            chain.doFilter(request, response);
        } 
     else {
            response.sendRedirect("/WEB-INF/login.jsp");
        }

}

我正在使用chrome,该功能根本不起作用,即用户通过URL输入或回击按钮注销后仍然可以访问页面。

我做错了什么?应该做些什么改变才能使它发挥作用。

提前致谢,

0 个答案:

没有答案