Zerar variável após executar o Filter

Amigos criei um filter para que o usuário seja obrigatório a se logar, e quando isso acontece “seto” um variável do tipo boolean para true em que momento devo setar essas variável para false, pois se eu fecho o browser e abro novamente consigo acessar o sistema sem se logar, isso porque essa variável esta com o valor true

Essa variável está salva na sessão ou aonde???
Se for na sessão você faz um session.invalidate(); quando o cara clicar no botão de deslogar,e quando o cara fecha a pagina essa variável vai embora também,porque limpa a sessão…

Essa variável e um boolean, queria colocar ela na sessão mas quando ocorre alguma ação q passa pelo meu Filter novamente o atributo que coloquei na sessão esta nulo.

Cara,na sessão ela só vai perder o valor se você invalidar a sessão,fechar a pagina ou preencher ela com outro valor…

Vamos lá… Vou explicar melhor,

tenho o método abaixo minha pergunta inicial era como eu setar o valor false na variável usuarioLogado

Isso porque estou tentando colocar o usuário logado na sessão conforme abaixo mas esta dando Null Pointer aqui facesContext.getExternalContext()

ai queria saber como posso atribuir contexto nesse trecho que esta dando o erro,

quando faço isso no Mbean funciona mas como mapeio meu Filter no web.xml acho q nesse momento ele não e preenchido

HttpSession sessaoHttp = (HttpSession) facesContext.getExternalContext().getSession(true);  
					         sessaoHttp.setAttribute("usuarioLogado", loginTO.getUsuario());
		public void doFilter(ServletRequest request, ServletResponse response, 
				FilterChain filterChain) throws IOException, ServletException 
boolean usuarioLogado = false;
try {
					
					if(usuarioLogado == false){
						String link = "http://" + httpServletRequest.getServerName() + ":"+ httpServletRequest.getLocalPort() + LOGIN_URL;
						response.setContentType("text/html");
						PrintWriter out = response.getWriter();
						out.println("<script>parent.location.href='"+link+"'</script>");
						out.close();
					}else{
						if(usuarioLogado  == true){
							filterChain.doFilter(request, response);
							
							 HttpSession sessaoHttp = (HttpSession) facesContext.getExternalContext().getSession(true);  
					         sessaoHttp.setAttribute("usuarioLogado", loginTO.getUsuario());						
							 }
					}
			} catch (Exception e) {
				e.printStackTrace();
			}
			}

Cara,porque você não faz assim,tem um controller que verifica se aquele usuario existe ou não certo???
Se o cara e a senha dele existir,esse cara tá logado
dai você define

boolean usuarioLogado = true;
httpSession.setAttribute("usuarioLogado" ,usuarioLogado);

Pronto,o cara está logado,agora o cara quer requisitar uma página e essa requisição vai chamar o filtro,dai no filtro você pega o valor usuarioLogado e verifica se ele está logado.

public void doFilter(ServletRequest request, ServletResponse response,   
                FilterChain filterChain) throws IOException, ServletException   

try {  
                      HttpSession httpSession = request.getSession();
                      boolean usuarioLogado = httpSession.getAttribute("usuarioLogado");
                    if(usuarioLogado == false){  
                        String link = "http://" + httpServletRequest.getServerName() + ":"+ httpServletRequest.getLocalPort() + LOGIN_URL;  
                        response.setContentType("text/html");  
                        PrintWriter out = response.getWriter();  
                        out.println("<script>parent.location.href='"+link+"'</script>");  
                        out.close();  
                    }else{  
                        if(usuarioLogado  == true){  
                            filterChain.doFilter(request, response);  
                              
                             HttpSession sessaoHttp = (HttpSession) facesContext.getExternalContext().getSession(true);    
                             sessaoHttp.setAttribute("usuarioLogado", loginTO.getUsuario());                          
                             }  
                    }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            }  

Terei que mudar a forma que isto esta sendo feito,

Hj existe um sistema que a função dele e apenas validar o usuário no AD e direciona para o Menu, quando o usuário escolhe a opção do Menu e redirecionando para outro sistema e já faz um insert do usuário que foi logado para que o sistema 2 utilize esse usuário,

o problema e q eu criei esse Filter no sistema 2 e eu teria que setar o usuário em um atributo nesse Filter mas isso no Filter não esta funcionando, Não tenho esse controller no sistema 2, apenas o Filter que redireciona para a tela no qual e um relatório…

Entendi,como eu falei cara,você precisa verificar se o cara está logado,e dai atribuir algum sinal de que ele está logado ,isso na sessão e verificar sempre por esse “sinal”