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;
}
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 "";
}