Olá!
No exemplo dessa aula, quando logo com um usuário, fecho o navegador e abro o navegador novamente o usuário que tinha sido logado não é deslogado automaticamente e continua aparecendo como logado no console.
Alguém tem uma ideia do porquê o usuário não estar sendo deslogado quando fecho o navegador?
Estou usando o chrome.
Meu código abaixo:
@WebServlet(urlPatterns = "/login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
@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>Usuario nao encontrado</body></html>");
}
else {
Cookie cookie = new Cookie("usuario.logado", usuario.getEmail());
resp.addCookie(cookie);
writer.println("<html><body>Usuario logado: " + usuario.getEmail() + "</body></html>");
}
}
}
@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("Usuario: " + usuario + " acessando a URI" + uri);
chain.doFilter(request, response);
}
private String getUsuario(HttpServletRequest req) {
String usuario = "<deslogado>";
Cookie[] cookies = req.getCookies();
if(cookies == null)
return usuario;
for(Cookie cookie : cookies) {
if(cookie.getName().equals("usuario.logado")) {
usuario = cookie.getValue();
}
}
return usuario;
}
@Override
public void init(FilterConfig arg0) throws ServletException {}
}