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

Dúvida no Ex. 4 da Aula 5 - Mantendo informações relativas ao usuário com cookies

Realizei todos os exercícios, e aparentemente tudo funciona normalmente, porém, ele não exibe o campo usuario como "deslogado", mesmo que eu não digite nada nos campos de email e senha, ele continua exibindo no console "Usuário guilherme.silveira@alura.com.br acessando a URI /gerenciador/login".

Segue abaixo o meu código:

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

usuário ou senha inválida. "); else { Cookie cookie = new Cookie("usuario.logado", email); resp.addCookie(cookie); writer.println("Usuário logado com o email " + email + "</html"); } } }

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;

@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;

Cookie cookie = getUsuario(req); String usuario = ""; if (cookie != null) usuario = cookie.getValue(); System.out.println("Usuario " + usuario + " acessando a URI " + req.getRequestURI()); chain.doFilter(request, response); }

private Cookie getUsuario(HttpServletRequest req) { Cookie[] cookies = req.getCookies(); if (cookies == null) return null; for (Cookie cookie : cookies) { if (cookie.getName().equals("usuario.logado")) return cookie; } return null; }

@Override public void init(FilterConfig arg0) throws ServletException { } }

Bem vindo ao nosso gerenciador de empresas!

Nome:

Email: Senha:
2 respostas
solução!

Bom dia Diego.

quando criamos o cookie ele será excluído apenas quando fechamos o navegador, nas próximas aulas será demonstrado como exclui-lo antes de fechar o navegador.

Apenas confirme esta situação, pois no caso se você está apenas fechando a aba do exercício sem fechar o navegador realmente o cookie não estará sendo excluído.

Ela vai excluir apenas quando fechar o navegador.

Olá Tiago,

Foi isso mesmo. É necessário fechar e abrir o navegador para que ocorra a alteração. Mas como na vídeo-aula e na explicação o professor executa direto, sem fechar o navegador, não sabia que isso era necessário.