JSF Session e Botao Voltar

776 views
Skip to first unread message

Fabiano Sandi

unread,
Feb 27, 2009, 3:38:22 PM2/27/09
to jav...@googlegroups.com
Boa Tarde Pessoal, 

   Estou desenvolvendo o login e o controle de acesso às páginas de um sistema , estou com um problema e gostaria do auxilio de vocês 
para tentar esclarecer e resolver essa situação.
   Basciamente fiz uma tela de login e uma home para onde o usuário é direcionado em caso de sucesso e onde existe um botao para sair do sistema, este 
invoca um action em meu Bean para invalidar a sessão e chamar novamente a página de login.
   Existe um filtro que faz um controle básico de acesso as páginas evitando que alguém acesse uma página sem estar com a sessão ativa.
   Tudo isso descrito acima funciona perfeitamente. Porém, se logamos no sistema, clicamos no botão de sair e quando a página de login é carregada
clicamos no Voltar do browser ele exibe a home novamente, é claro que nenhuma ação poderá ser feita já que a sessão do usuário foi invalidada. Penso
que essa situação deve-se ao cache das páginas pelo Browser, por esse motivo, inclui o PhaseListener abaixo para evitar o cache das páginas:

    public class LifeCycleListener implements PhaseListener {    

   public void beforePhase(PhaseEvent arg0) {
FacesContext facesContext = arg0.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT");
   }

   public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
   }

   public void afterPhase(PhaseEvent event) {
   }
    }

    Este código valeu para acertar a situação do IE porém o Firefox continua com o comportamento descrito acima.
    Estou certo em pensar no cache ou existe alguma outra situação que está influenciando nesse comportamento?
    Caso seja cache, exite alguma configuração especial para tratar o Firefox?

    Obrigado a todos, 

    Fabiano.

Rafael Ponte

unread,
Feb 28, 2009, 7:07:32 AM2/28/09
to jav...@googlegroups.com
Olá Fabiano,

Eu nunca parei para tentar solucionar este problema, pois isso até hoje não tornou-se um problema para mim :))

Eu lembro que existem determinados parâmetros do header do response que devem ser manipulados para que isso funcione bem na maioria (se não todos) os browser existentes hoje em dia.

Depois de uma pesquisa rápida eu encontrei esse post com um solução um pouquinho diferente da tua,
http://www.fnbrandao.com.br/blog/2008/05/problema-no-botao-back-do-navegador/

Eu não fiz os testes do post, mas posso te garantir que isso não é um problema especifico do JSF, muito menos de qualquer framework web, sendo, tente pesquisar pelo problema independente de tecnologia (caso este acima não resolva).

Quem já passou por isso e possuir uma solução semelhante ou melhor (que funcione), por favor, comentem.
Espero que ajude, Fabiano.

Abraços e boa sorte.

2009/2/27 Fabiano Sandi <fabian...@gmail.com>



--
Rafael Ponte
http://www.rponte.com.br

Fabiano Sandi

unread,
Mar 2, 2009, 6:20:48 AM3/2/09
to jav...@googlegroups.com
Muito Obrigado Rafael,
 
   Com este link que você passou o problema foi resolvido para IE e Firefox.
 
Valeu!

2009/2/28 Rafael Ponte <rpo...@gmail.com>
Reply all
Reply to author
Forward
0 new messages