Contexto: Estou construindo um CRUD em Java Web para estudar e adquirir conhecimento.
Não estou usando nenhum Framework, somente JSTL para ter um código mais elegante nas JSPs.
Eu implementei recentemente a autenticação do sistema usando Filter e HttpSession. E implementei também o botão ‘sair’ que chama uma ação no meu sistema que invalida a sessão session.invalidate();
e depois redireciona para a página delogin.jsp
.
Problema: Mesmo invalidando a sessão e barrando as requisições com Filtros, se eu clicar em ‘Voltar’ no navegador, eu acesso o meu sistema na última página que eu acessei antes de clicar em ‘sair’.
Eu não consigo fazer nada lá dentro do sistema após 'voltar'. Pois, qualquer ação é barrada pelo meu Filtro, que checka se o usuário está logado ou não. Porém, eu gostaria que ao tentar voltar a página, o navegador redirecionasse sempre para a página de login.
Estou usando o Tomcat
, na versão 9. Mas, já testei usando o Jetty
, e o resultado foi o mesmo.
O que já tentei: Já tentei usar forward
e redirect
. O problema permanece em ambos os casos. Atualmente meu bloco de código de Logout
está assim:
req.getSession().invalidate();
resp.setHeader("Cache-Control","no-cache");
resp.setHeader("Cache-Control","no-store");
resp.setHeader("Pragma", "no-cache"); // HTTP 1.0.
resp.setHeader("Expires", "0"); // Proxies.
resp.sendRedirect("login.jsp");
Alguém já passou por isso? Poderiam dar uma sugestão?