Request no login

15 respostas
Chari

Quando está logado e clica em “encerrar sessao”, direciona para outra pagina, mas se logo que encerrar clicar em “back”, ele pega o login e a senha que está no request e reconecta ao banco. Não adianta limpar o cache e a sessao já está destruida, e com os dados do request ele valida o login e senha novamente e cria outra sessao. e deixa o usuario logado.

Tem como arrumar isso?

Uma solucao que estou tentando, para ver se funciona é. Criar uma classe que só pega o login e cria uma sessao, e outra que só pega a senha e a sessao e verifica no banco, para que o request nao fique com os dois campos (Login e Senha) para que quando voltar ele nao reconecte. Mas ainda nao sei que dá certo, gostaria de saber se alguem tem alguma solucao?

Obrigado,
Chari

15 Respostas

_fs

Quando o usuário clica em “Encerrar Sessão” você apenas o redireciona para outra página? Que tal retirar os dados dele da session? Sendo assim, na próxima requisição dele, você pode checar se a sessão existe ou não.

Chari

eu retiro e encerro a sessao, mas quando clica em back ele pega o que está no request, e loga de novo em outra sessao

_fs

Não estou entendendo esse lance de “pega o que está no request”. Quando o cara clica em back automaticamente é feita outra requisição ao server com os dados antigos do login dele?

Aqui sempre bastou um
session.removeAttribute( nomeUsuario );

e antes de qualquer requisição

if( session.getAttribute( nomeUsuario ) == null )

goto( login.htm );
Chari

isso, ele pega o que está no endereço lá em cima, que contem os dados dele e loga criando outra sessao.

:frowning:
Chari

_fs

Não sei se vai resolver nesse seu caso, mas que tal mudar o method do form de GET para POST?

E tem certeza absoluta que tirou o cache de tudo quanto é lado? Isso também deveria resolver o problema do ‘voltar’ do browser.
<meta HTTP-EQUIV=“Expires” CONTENT=“0”>

Chari
&lt;meta HTTP-EQUIV="Expires" CONTENT="0"&gt;

isso limpa o cache tb?

eu já usei GET e POST, e nao adiantou

Chari

_fs

Pelo que entendi você fica passando os parâmetros do login de página para página. Por quê?

Situação:

  • usuário loga na págna login.htm
  • sistema faz validação
  • se validação bem sucedida, sistema cria uma sessão e coloca informações necessárias nela
  • usuário redirecionado para index.htm
  • usuário clica em “deslogar”
  • sistema retira as informações da sessão
  • usuário redirecionado para login.htm
  • usuário clica no botão ‘voltar’ do browser e vai para index.htm, que estranhamente automaticamente faz uma requisição ao server
  • já que os dados estavam guardados bonitos na sessão, não há necessidade de guardar os valores digitados na tela anterior, portanto, sistema procura pelas informalçoes de login, não encontra, e a requisição falha
Chari

mas como eu faço para guardar os valores e nao mostrar na tela?

_fs

Já que está entrando nesse tópico:
http://courses.coreservlets.com/Course-Materials/pdf/csajsp2/08-Session-Tracking.pdf
http://java.sun.com/developer/onlineTraining/webcasts/pdf/webcamp/dchen/dchen5.pdf

Ambos ótimos.

Chari

Tudo que está esses dois links eu já sei, e é isso que estou fazendo

Chari

S

como vc esta limpando o cache ?

Chari

response.setHeader&#40;&quot;Cache-Control&quot;,&quot;no-cache&quot;&#41;; //HTTP 1.1 response.setHeader&#40;&quot;Pragma&quot;,&quot;no-cache&quot;&#41;; //HTTP 1.0 response.setDateHeader &#40;&quot;Expires&quot;, 0&#41;; //nao salva cache no servidor proxy

esse é o codigo, mas nao mudou nada!!!

Chari

_fs

Está controlando sessão com hidden form fields, url rewriting e cookies? Não, não está.

Me perguntou

esses dois pdfs ensinam como não deixar a query string lá no url.

Mas posso ter entendido errado sua pergunta. Se você quis dizer como proceder para que a informação do login não vá à toa para as páginas seguintes, a resposta é: não mande elas pra lá hehe
Entra nesse outro link aqui, esclarece 3 dúvidas suas: a de cache e a duas de session
http://www.javacommerce.com/faqs/servletfaq.htm

Chari

eu tenho dois campos de textfield e um campo de hiddenfield, mas nao estou usando ele, estou pegando direto do textfield

Chari

Luiz_Henrique_Coura

acho que se você criar uma Filter, para filtrar dados de requisição, deve funcionar.

nela você testa se a sessão do usuário ainda existe antes de continuar o processamento.

procure por Filter+Servlets no google que você encontra um montão de coisas a respeito. aqui no forum também tem.

de uma olhada em:

http://www.guj.com.br/forum/viewtopic.php?t=7709&highlight=filter+servlet

Criado 14 de setembro de 2004
Ultima resposta 15 de set. de 2004
Respostas 15
Participantes 4