| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2009 15:37:09
|
Icecold
Thread.start()
![[Avatar]](/images/avatar/59d1edd22b6e0526fb3f8cb0a3fe9568.jpg)
Membro desde: 30/03/2009 12:27:10
Mensagens: 27
Offline
|
Boa tarde galera.
Estou com uma tremenda dúvida: é possível invalidar uma sessão ao fechar a janela do browser? Digo isso pois tenho um pequeno aplicativo, com filtro e tudo funciona perfeitamente. Adicionei um botão para efetuar um logout e tudo funciona muito bem, invalidando a sessão perfeitamente. Agora vêm as complicações: se eu clicar no botão voltar do browser, retorno para a tela do sistema. Não é possível fazer nada pois o filtro intercepta que não há sessão e redireciona para a tela de login. Primeira pergunta: como evitar que ao clicar no botão voltar do browser me exiba que a página expirou?
Depois de logado, se eu fechar a janela do browser, eu queria que também se encerrasse a sessão. Mas acontece que, após fechar a janela, se abri-la depois e digitar a url, eu acesso o sistema com todas as funcionalidades. Segunda pergunta: como invalidar esta sessão ao fechar o browser?
Obrigado
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2009 15:43:45
|
diegorc85
JavaBaby
Membro desde: 27/03/2007 18:07:11
Mensagens: 80
Offline
|
Qdo clicar no botão fechar, tenta fechar o browser tbm. Tive um problema parecido e só consegui resolver fazendo isso!!
tenho um post com informações q pode ajudar tbm
http://www.guj.com.br/posts/list/47107.java
This message was edited 1 time. Last update was at 29/07/2009 15:48:19
|
MBA engenharia de software com ênfase em serviços SOA. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2009 15:47:08
|
diegorc85
JavaBaby
Membro desde: 27/03/2007 18:07:11
Mensagens: 80
Offline
|
tenho tbm outra dica..
[code]public class Filtro implements Filter {
private FilterConfig config = null;
private ServletRequest req;
private ServletResponse res;
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//passa valores para variáveis globais:
this.req = req;
this.res = res;
HttpSession session = ((HttpServletRequest)req).getSession();
String testa = (String)session.getAttribute("permission");
if(testa=="allow"){
chain.doFilter(req, res);
}else{
((HttpServletResponse)res).sendRedirect("../index.jsp");
}
}
}
e depois tenho mais essa servlet para controle do Logoff
public class Logoff extends HttpServlet {
//...
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
((HttpServletResponse)response).sendRedirect("index.jsp");
}
//...
}
|
MBA engenharia de software com ênfase em serviços SOA. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2009 15:52:44
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
O velho problema do botao voltar (aka botao fechar 'X')
Essas coisas acontecem no cliente e sao dificies de lidar, pois vc nao consegue controlar isso no servidor...
Tenta usar o metodo history do javascript, passando -1... isso vai fazer que qdo o cara clique no voltar, seja jogado de novo para a pagina no qual ele clicou no botao voltar.
Mas isso nao RESOLVE o problema, só minimiza.
Abraços
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/07/2009 16:16:10
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline
|
Vamos por partes.
Botão Voltar:
Faça como foi sugerido, coloque um history(1) nas paginas. Se o usuario clicar no voltar, ele volta, mas ao encontrar esse comando vai navegar de volta p/ pagina de origem.
Encerrar a sessao quando fechar o browse:
2 maneiras de fazer:
1- Vc pode capturar o click no fechar do browser(pelas coordenadas) e faazer com que app seja redirecionada para seu logout.
2 - Defina um timeout pequeno para a sessão, tipo 10 segundos. Faca um IFrame oculto nas telas que fique fazendo pooling no servidor de 5 em 5 segundos por exemplo para ficar renovando a sessao. Quando o browser for fechado, não havera pooling e em 10 segundos a sessao expira.
Ja postei essas soluções no forum, da uma procurada.
[]´s
|
João Bier
Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2009 14:30:31
|
Icecold
Thread.start()
![[Avatar]](/images/avatar/59d1edd22b6e0526fb3f8cb0a3fe9568.jpg)
Membro desde: 30/03/2009 12:27:10
Mensagens: 27
Offline
|
Inseri o history(1) e funcionou em partes: ao clicar no botão voltar não me redireciona mais para a página anterior mas acontece que quando tento novamente logar no sistema, tenho o erro javax.faces.application.ViewExpiredException que a sessão expirou. Para resolver este contratempo, é necessário dar um refresh na página e volta tudo ao normal. Há como evitar este erro?
Quanto a invalidar a sessao ao fechar o broser não encontrei o post. Alguem poderia me passar o link.
Mais uma vez obrigado pessoal
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2009 16:02:48
|
gilson.anselmo
HelloWorld
![[Avatar]](/images/avatar/68e3748c109e1c6dd7fe541622744b4c.png)
Membro desde: 30/07/2009 14:53:02
Mensagens: 11
Localização: São Paulo
Offline
|
Pessoal
Não conheço muito de jsp/servlets, mas também não daria para abrir o browser sem os botos de avançar e back? utilizando javascript?
foi apenas uma idéia o que voces acham?
|
GILSON ARAUJO
GERENTE DE PROJETOS
msn: gilson_anselmo@hotmail.com
skype: gilson.anselmo |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/08/2009 12:21:26
|
gutomantovani
Smalltalk
![[Avatar]](/images/avatar/2d4c98d735f5a453e93bc22ee39331ab.jpg)
Membro desde: 15/08/2008 13:54:44
Mensagens: 1
Offline
|
Icecold wrote:Inseri o history(1) e funcionou em partes: ao clicar no botão voltar não me redireciona mais para a página anterior mas acontece que quando tento novamente logar no sistema, tenho o erro javax.faces.application.ViewExpiredException que a sessão expirou. Para resolver este contratempo, é necessário dar um refresh na página e volta tudo ao normal. Há como evitar este erro?
Quanto a invalidar a sessao ao fechar o broser não encontrei o post. Alguem poderia me passar o link.
Mais uma vez obrigado pessoal
Cara vc tem que usar history(-1) e não history(1)... vc está dando um avançar... e não um voltar desta forma
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2010 16:22:52
|
marceloplis
GUJ Ranger
Membro desde: 22/08/2005 10:08:21
Mensagens: 877
Localização: São Paulo - SP
Offline
|
Gelera,
Alguém achou o link ou uma outra solução para invalidar a sessao ao fechar o browser ?
Valew.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2010 16:29:44
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5748
Offline
|
Se você percebeu. o site do GUJ usa a seguinte técnica: um JSP bem boboca (http://www.guj.com.br/ping_session.jsp) que tem um tag refresh de 60 segundos. Esse JSP é acionado de um IFRAME escondido. (Dê um view source nesta página do GUJ).
Então você pode criar algo parecido: uma página JSP que verifique se um determinado usuário está logado. Quando essa página parar de ser chamada periodicamente para um determinado usuário, provavelmente o browser foi fechado. Agora é questão de pensar como você pode aproveitar essa informação.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2011 11:09:02
|
joaoorso
JavaTeenager
![[Avatar]](/images/avatar/25819c8fe224033cc89bafa6a16cdd04.jpg)
Membro desde: 23/11/2006 21:48:55
Mensagens: 179
Localização: Curitiba - PR
Offline
|
1 Forma. Mas nao funciona no Opera ! Vou mudar para essa 2ª forma que o jgbt falou .
This message was edited 1 time. Last update was at 01/11/2011 11:11:37
|
João Ricardo Orso .
SCJP 5.0.
TSI
----------------------------------------------------------------
Os níveis de visibilidade do Java são: public, default, protected, private e " protected by Chuck Norris ", não tente acessar um atributo com este último modificador.
|
|
|
 |
|
|