Jsp + objeto session + cache = problema?

6 respostas
alessandro.a.r

Caros,

Estou com um problema num JSP que acessa um objeto da session. Esse objeto é uma String que serve pra mostrar o nome do usuário na tela. O problema é descrito nos seguintes passos:

  • Usuário A faz login e em seguida acessa uma jsp que carrega o seu nome da sessão.
  • Usuário B faz login, na mesma rede, em outro browser, e acessa a mesma jsp que o usuário A acessou. O nome do usuário A aparece para ele.

Pelos testes que fiz isso acontece somente quando o cache do proxy está ativo. Ou então quando acessamos pelo apache. Na real não sei onde está a causa. Mas sei que acessando diretamente o tomcat o problema não acontece.

Gostaria de saber como evitar esse tipo de problema, sem ter que me preocupar com caches externos.

6 Respostas

alessandro.a.r

Aliás, este site está com o mesmo problema que citei. Meu colega de trabalho foi acessar este tópico e apareceu pra ele LOGOUT [alessandro.a.r], como se eu estivesse logado. Ele não conseguiu alterar os meus dados, mas mesmo assim é um problema, pois apareceu uma informação que não deveria aparecer.

Mero_Aprendiz

Uma duvida. Quando você vai colocar essa String na sessão do usuário logado, essa String vem de onde?

[]'s
JL

alessandro.a.r

Essa string vem do banco de dados. É carregada na session após a realização do login ou após a geração da senha. Apenas nestes casos.

Mero_Aprendiz

Quando você “debuga” o login do segundo usuário, o nome que vem do banco é o nome que deveria realmente ser exibido?

[]'s
JL

alessandro.a.r

Quando você “debuga” o login do segundo usuário, o nome que vem do banco é o nome que deveria realmente ser exibido?

[]'s
JL

Sim, pois quando o usuário faz o login o nome aparece corretamente. O problema surge quando ele acessa um outro link, que é uma jsp que busca uma string da session.

alessandro.a.r

A princípio resolvi o problema com o código abaixo:

response.setHeader(“Cache-Control”,“no-cache”); //HTTP 1.1
response.setHeader(“Pragma”,“no-cache”); //HTTP 1.0
response.setDateHeader (“Expires”, 0); //prevents caching at the proxy server

Criado 2 de abril de 2009
Ultima resposta 7 de mai. de 2009
Respostas 6
Participantes 2