Ae galera …
seguinte … eu fiz uma aplicaçãozinha de acesso ao sistema … tipo o kra coloca senha ele valida e blz … soh q eu estou com um pequeno problema . Tipo quando o kra da um logout ele volta pra tela inicial. até ai blz … mas se ele apertar o avancar do navegador ele volta como se tivesse logado …
além disso, vc pode invalidar a sessao inteira, dependendo do caso vc precisará, e o método pra isso tomando o exemplo acima seria:
ses.invalidate();
Espero ter ajudado ai!
abraço!
D
DanielBadawiPJ
onde eu tava mexendo com isso…
e nao funcionou legal…
se eu tivesse acabado de fazer logoff de depois SEM FECHAR o browser e digitasse o endereço direto de algum servlet q na teoria só teria q funcionar se a sessao estivesse aberta, abria a pagina normal!
mas se eu fechasse o browser e tentasse acessar alguma pagina q necessita de sessão aí sim nao abria e exibia uma msg q a sessao nao está aberta…
pq acontece isso?
ah! tem outra coisa!
eu setei minha sessao pra desativar automaticamente se ficasse inativa por 1 min… e se eu deixasse passar esse 1 minuto… a sessao expirava… e era redirecionado pra uma pagina de erro…
aí se eu tentasse acessar a pagina (essa q a sessao expirou) aí nao abria (funcionou)… mas qualquer outro servlet q usa a mesma sessão abria normalmente sem precisar fazer login…
estranho né?
ou é bug do programador mesmo? heheh :lol: :lol:
acho q está mais para a ultima opção!
D
DanielBadawiPJ
:roll: :roll:
mas aí… tem esquema de nao deixar o cara voltar? pelo browser?
tipo, até da pra voltar… mas o servlet logo ve q a sessão nao está aberta e manda de volta pra msg de erro?
J
Juliano_CarnielPJ
exatamente o que o New_Radical disse, vc voltando pelo browser ele vai voltar a pagina anterior conforme ela estava, pois ja está em cache, porem se vc voltar para ela e der um refresh, ele nao deverá aparecer, pois nao esta mais logado. entende?!
acho que eh isso!
cya!
eltonk
tente setar um atributo na sessão, e qndo clicar em logout retire esse atributo, tipo:
Qndo o cara loga… session.setAttribute(“logado”, new Boolean(true));
Qndo desloga… session.setAttribute(“logado”, new Boolean(false));
Ae vc testa esse atributo nas páginas onde quem não for logado não deverá ter acesso…
Eu faço assim, e funciona legal =)
Abraços,
W
wetrainPJ
Eu to fazendo assim da forma q vc falou eltonk,
mas eu fazendo assim toda hr eu tenho q testar e o kra vai conseguir voltar se ele der o back no navegador soh q naum vai conseguir acessar nenhum informação … naum eh !!!
naum tem como quando o kra apertar o back no navegador ja expirar a sessão ?!?!?!
como se fosse desabilitar o back do navegador…
eltonk
Nas Páginas JSP (Visão do meu projeto) eu adiciono o seguinte código:
Isso faz com que a página não seja salva em cache… Mas não encerra a sessão…
O que vc pode configurar eh um tempo menor para a sessão se encerrar. Eu sempre deixo 5min… acho um tempo bom para páginas com acessos restritos…
Lembrando tb, que se o browser é fechado, a sessão morre ali tb…
… Lembrando tb, que se o browser é fechado, a sessão morre ali tb…
Onde que tem dizendo que se o browser é fechado a sessão é fechada?
…isto não é o comportamento normal? bem, independente do código do elton, se tu fechar o browser, a sessão é fechada…
eltonk
New_Radical
De que tipo de sessão vc está falando?!?!
Tu é deste mundo?!
:space:
Com todas as letras, S I M, quando o browser é fechado a tua sessão é morta…
Não existem possibilidades de um usuário abrir o browser novamente entrar na página do seu banco e o seu login (feito alguns segundos antes e que vc depois fechou o browser) ainda permanecer ativo.
Pode ser na mesma máquina, na máquina do lado, lá na China…
… Lembrando tb, que se o browser é fechado, a sessão morre ali tb…
Onde que tem dizendo que se o browser é fechado a sessão é fechada?
…isto não é o comportamento normal? bem, independente do código do elton, se tu fechar o browser, a sessão é fechada…
Nam nam nim nam não!
Quem te disse isso?!?!?! :roll:
…ninguém me disse, é de ver acontecer mesmo! heheahaeh
J
Juliano_CarnielPJ
Bom, pelo que eu já em aulas e tudo mais, uma instancia de Session eh criada para cada pessoa mesmo, porém se o cliente(no caso o browser) é fechado a session eh finalizada. o que já não acontece com coockies.
mas na teoria a sessioon eh pra ser assim!
cya!
M
matheusPJ
“New__Radical”:
Okay, let’s go!
Uma sessão não é destruida quando o browser é fechado não. Ela vai continuar lah, “vivendo” no servidor. O que acontece, é que o cliente não vai mais poder pegar a sessão. Mas, a sessão não morre!
…humm, ta mas… se o cliente não pode mais pegar a sessão, e ela continua viva no server, no final das contas… ela morre por tempo certo? então… tem alguma maneira de eu devolver a sessão pro cliente depois de ter fechado o browser? … se não, vai dar na mesma, com sessão viva ou não, pro cliente, ta tudo morto… :roll:
M
matheusPJ
aaahhhnn!!! tão ta ok ok!
B
b_storm_dPJ
Vou pegar uma carona no assunto e mandar a minmnha dúvida…
Como eu faço pra descobrir se o usuário ainda não logou ou se a sessão expirou?
Pelo que eu testei aqui em nenhum dos dois casos a sessão é igual a null e nos dois casos qualquer atributo que eu tento ler usando getAttribute é igual a null. O que diferencia esses dois “estados” da sessão?
Thanks
G
gelocciPJ
galera, trabalhar com session realmente eh chato…
tenho uma aplicacao q trabalha em ambiente distribuido e nao eh q a session se perde qdo o servidor troca de maquina…
o rapaz se loga com uma matricula e qdo vai trocar de tela vem dados de outra… to apanhando feio pra corrigir isso
hahahaha
N
New_Radical
O “programador” fez gambiarra nos códigos!
N
New_Radical
Voltar ele até pode voltar, pois a página pode estar em cache.
Mas, usar a página, ae não. Qnd ele clicar em algum link que necessite estar logado, ae o programa não vai deixar e vai redirecionar ele para alguma página.
… Lembrando tb, que se o browser é fechado, a sessão morre ali tb…
Onde que tem dizendo que se o browser é fechado a sessão é fechada?
…isto não é o comportamento normal? bem, independente do código do elton, se tu fechar o browser, a sessão é fechada…
Nam nam nim nam não!
Quem te disse isso?!?!?! :roll:
N
New_Radical
Okay, let's go!
Uma sessão não é destruida quando o browser é fechado não. Ela vai continuar lah, "vivendo" no servidor. O que acontece, é que o cliente não vai mais poder pegar a sessão. Mas, a sessão não morre!
A sessão só morre se for dado um invalidate() ou se o client ficar algum tempo sem interegir com o site (isso que acaba acontecendo qnd o browser é fechado). E qnd o browser é aberto novamente, uma nova sessão é criada para ele no site.
Executem esses código, ae vcs vão ver qnd uma sessão é criada e qnd q ela é destruida.
Uma sessão não é destruida quando o browser é fechado não. Ela vai continuar lah, “vivendo” no servidor. O que acontece, é que o cliente não vai mais poder pegar a sessão. Mas, a sessão não morre!
…humm, ta mas… se o cliente não pode mais pegar a sessão, e ela continua viva no server, no final das contas… ela morre por tempo certo? então… tem alguma maneira de eu devolver a sessão pro cliente depois de ter fechado o browser? … se não, vai dar na mesma, com sessão viva ou não, pro cliente, ta tudo morto… :roll:
Só o termo de dizer que a sessão morre qnd o browser é fechado que está errado. Ela não morre pq o browser foi fechado, e sim, pq expirou.
É o quem tem dizendo na especificação. E… fui meio chato com isso, pq eu estou estudando para a certificação da SCWCD, e tem umas questões de HttpSession sobre isso, e eu errava essas questões pq dizia que a sessão morria qnd o browser era fechado.
[]'s
N
New_Radical
Bem…
Não entendi muito bem (Já são 23:33 e ainda tenho que fazer um trabalho de Teoria dos Autômatos e Linguagens Formais pra entregar amanhã! Muita cabeça não está muito boa depois de uma reunião com o chefe).
Mas bem, dê uma olhada na interface HttpSessionListener, ela te diz quando uma sessão foi criada e destruida.
E para saber se uma pessoa está logada ou não, verifique se na sessão tem um atributo (que vc colocou na hora que ela se logou).