Problema com back button e refresh do browser

Estou com problemas com o back button do browser. Estou fazendo uma aplicação web e preciso fazer com que quando o usuario clique no back button do browser a session seja destruida e o usuario teha que se logar novamente, vi varios exemplos pesquisando pelo google inclusive criei um filter. porém nada esta dando certo. o usuario continua conseguindo usar os botões de navegação do browser. Alguém ai sabe como resolver isso?

Meu filter eu coloquei assim:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpSession session = httpRequest.getSession(false);

//
String requestPath = httpRequest.getPathInfo();

Visit visit = (Visit) session.getAttribute(Constants.VISIT_KEY);
/*
 * If trying to access a secured paged the user must be logged on and have a current session
 * ie the visit object must exist
 */
if (isSessionControlRequiredForThisResource(httpRequest)) {   
  
  // is session invalid?   
  boolean temp = isSessionControlDisabled(httpRequest);
  if(temp);
  
  if (isSessionInvalid(httpRequest)) {   

      session.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath);
      Utils.log(servletContext, "Session is invalid! redirecting to timeoutpage, redirecting to: " + httpRequest.getContextPath());
      
      System.out.println("Session is invalid! redirecting to timeoutpage, redirecting to: " + httpRequest.getContextPath());
      
      httpResponse.sendRedirect(httpRequest.getContextPath());   
      return;   

  }   
}  
  session.removeAttribute(Constants.ORIGINAL_VIEW_KEY);
  chain.doFilter(request, response);

}

criei também um phase listener
public void beforePhase(PhaseEvent phaseEvent) {
FacesContext facesContext = phaseEvent.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader(“Pragma”, “no-cache”);
response.addHeader(“Cache-Control”, “no-cache”);
response.setHeader(“Cache-Control”, “no-store”);
response.addHeader(“Cache-Control”, “must-revalidate”);
response.addHeader(“Expires”, “0”);

}

porem continuo tendo problemas com os botões de navegação. E pra piorar no doFilter o request sempre vem com uma session nova e nunca da timeout