Estou com o seguinte problema: apesar de logar corretamente, continua aparecendo usuário deslogado:
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Usuário deslogado acessando a URI /gerenciador/
Classe Login:
package br.com.alura.gerenciador.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.com.alura.gerenciador.Usuario;
import br.com.alura.gerenciador.dao.UsuarioDAO;
@WebServlet(urlPatterns = "/login")
public class Login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String email = req.getParameter("email");
String senha = req.getParameter("senha");
Usuario usuario = new UsuarioDAO().buscaPorEmailESenha(email, senha);
PrintWriter writer = resp.getWriter();
if(usuario==null) {
writer.println("<html><body>Usuário inválido</html></body>");
} else {
HttpSession session = req.getSession();
session.setAttribute("Usuario.logado", usuario);
writer.println("<html><body>Usuário logado: " + email + "</body></html>");
}
}
}
Classe Logout:
package br.com.alura.gerenciador.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.alura.gerenciador.Usuario;
@WebServlet(urlPatterns = "/logout")
public class Logout extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession().removeAttribute("usuario.logado");
PrintWriter writer = resp.getWriter();
writer.println("<html><body>Deslogado com sucesso</html></body>");
}
}
Classe FiltroDeAuditoria:
package br.com.alura.gerenciador.web;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import br.com.alura.gerenciador.Usuario;
@WebFilter(urlPatterns = "/*")
public class FiltroDeAuditoria implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();
String usuario = getUsuario(req);
System.out.println("Usuário " + usuario + " acessando a URI " + uri);
chain.doFilter(request, response);
}
private String getUsuario(HttpServletRequest req) {
Usuario usuario = (Usuario) req.getSession().getAttribute("usuario.logado");
if(usuario==null) return "<deslogado>";
return usuario.getEmail();
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
index.html:
<html>
<body>
Bem vindo ao nosso gerenciador de empresas!<br/>
<form action="novaEmpresa" method="POST">
Nome: <input type="text" name="nome" /><br />
<input type="submit" value="Enviar" />
</form>
<form action="login" method="POST">
Email: <input type="email" name="email" />
Senha: <input type="password" name="senha" />
<input type="submit" value="Enviar" />
</form>
<form action="logout" method="POST">
<input type="submit" value="Deslogar" />
</form>
</body>
</html>