Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida com o Logout

Quando eu dou Logout, estando ou não logado, ele me envia a mensagem do html, eu tentei alguns tratamentos para ele exibir outra mensagem caso não estivesse logado porém nada funcionou, o motivo é por estar usando Session?

3 respostas

Oi Carlos, não necessariamente, a session funciona independente de você está logado ou não. Pra gente saber o por que de não ter funcionado, precisamos ver o código do que você fez.

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        if (req.getSession() != null) {

            req.getSession().removeAttribute("usuario.logado");

            RequestDispatcher dispatcher = req
                    .getRequestDispatcher("/WEB-INF/paginas/logout.html");
            dispatcher.forward(req, resp);
        } else {
            PrintWriter writer = resp.getWriter();
            writer.println("<Deslogado>");
        }

    }
}
solução!

Carlos, o problema é o req.getSession(), o método getSession funciona da seguinte forma: retorna a sessão associada a requisição, se não houver uma, ele cria uma nova.

Então, o if nunca vai ser false, por que ele sempre vai ter uma sessão disponível.

Você precisa verificar o atributo diretamente. Um exemplo seria:

if (req.getAttribute("usuario.logado") != null) { 
//... 
}

Ai sim, se o atributo não existir, ele vai retornar null.