要求:
我正在我的网络应用程序(基于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输入或回击按钮注销后仍然可以访问页面。
我做错了什么?应该做些什么改变才能使它发挥作用。
提前致谢,