Como fazer logout e invalidar a sessão?

Tenho esse login que guarda um objeto do tipo Usuario na sessão com o nome do atributo usuario, eu gostaria de saber como eu implemento no meu BB o contrário, ou seja, o logout para destruir a sessão e o objeto Usuario.

Meu login tá assim:

FacesContext fc = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) fc.getExternalContext().getSession(false); //cria uma sessão contendo o pojo do usuario session.setAttribute("usuario", usuario); session.setAttribute("data", new Date()); if (session.getAttribute("msg") != null) { session.removeAttribute("msg"); }

Ainda no mesmo contexto da pergunta: como eu faço para pegar no meu BB esse atributo da session?
Tentei como segue mas não veio nada de retorno:

public String getMensagemUsuarioLogado() { mensagemUsuarioLogado = "Sem usuário logado..."; FacesContext fc = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) fc.getExternalContext().getSession(false); //Verifica se o objeto Usuario existe na sessao if (session.getAttribute("usuario") != null) { Usuario usuarioLogado = (Usuario) session.getAttribute("usuario"); Date dataHoraLogado = (Date) session.getAttribute("data"); mensagemUsuarioLogado = usuarioLogado.getNomeReal() + " logado em " + new SimpleDateFormat("dd/MM - HH:mm").format(dataHoraLogado); } return mensagemUsuarioLogado; }

Obrigado.

Verifique o

session.invalidate(); 

Obrigado (vizinho de campinas), mas onde eu verifico isso?

Vou te dar mais uma opção:

você pode fazer um método por exemplo: actionLogout(){} que limpe a sessão:

public String actionLogout(){
        Map sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        sessionMap.clear();
        return "paginaLogin";
}

Com esse método você limpa sua sessão, e redireciona para a página de login.

Agora para você pegar esse atributo da session, uma outra implementação seria assim:

public String pegarUsuarioSession(){
        Map sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        Usuario user = (Usuario) sessionMap.get("usuario"); //sendo que "usuario" é o nome do seu usuário na session.
        return "";
}

Qualquer dúvida é só falar… t+

Muito obrigado amigo, vou trabalhar nas opções que você me deu.

Resolvido, muito obrigado a todos e principalmente ao 22-Gers

Agora tá funcionando (pelo menos essa parte), coloquei filtro de logado e filtro de tempo da sessão e todos ficaram ok.

De nada cara, precisando é só postar… abraços.

[quote=22-Gers]Vou te dar mais uma opção:

você pode fazer um método por exemplo: actionLogout(){} que limpe a sessão:

public String actionLogout(){
        Map sessionMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        sessionMap.clear();
        return "paginaLogin";
}

[/quote]

O que seria esse Map? Qual é a biblioteca dele?

Muito obrigado!

Att,

André Vieira.