Login e informacoes de usuario logado - JSF 1.2 + Facelets + Hibernate 3.2

3 respostas
PePeLeGaL

Bom dia pessoal,

Criei um sistema web que tem um cadastro basico para o usuario poder logar e os campos de login e senha.

Quando eu cadastro mais de um usuario seguidos, informacoes de um usuario sao utilizadas indevidamente por outros usuarios. Tipo, quando um usuario faz saques, o saque está sendo da conta de outro usuario. Mas, se eu reiniciar o tomcat, isso nao acontece.

O meu metodo de logout está assim:

public void doLogout() {

        try {
            final HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
            UsuarioSistema pojo = (UsuarioSistema) session.getAttribute(ConstantsWeb.USUARIO_SISTEMA_KEY);

            if (SegurancaService.isLoginValido(pojo)) {
                AutenticacaoService.doLogout(pojo.getLogin());
            }
            session.setAttribute(ConstantsWeb.USUARIO_SISTEMA_KEY, null);

        } catch (ServiceException ex) {
            setShowMessagePesquisa(true);
            addError(ex);
        }
    }

e o metodo que eu uso para pegar informacoes do usuario logado está assim:

public static UsuarioSistema getUsuarioLogado() {
        return (UsuarioSistema) getCurrent().getAttribute(ConstantsWeb.USUARIO_SISTEMA_KEY);
    }

Alguem sabe o motivo do problema estar acontecendo? :cry:

Obrigado,
PePeLeGaL

3 Respostas

mausexdd

voce esta mantendo o 1º usuario na sessao após o logout , lembre-se de mudar o valor do obj para null, e tirar destruir a session.

:smiley:

flw

PePeLeGaL

mausexdd

Seria suficiente acrescentar a linha abaixo no metodo de logout?

session.invalidate();
mausexdd

Correto segue abaixo um exemplo …

public String destroiSessao() {
		FacesContext fc = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) fc.getExternalContext().getSession(
				false);
		session.invalidate();
		return "index";
	}

Não esqueça de tbm instanciar um novo objeto

Criado 27 de agosto de 2011
Ultima resposta 27 de ago. de 2011
Respostas 3
Participantes 2