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