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

Duvida sobre o código que fiz

Boa tarde! Eu estou com bastante dificuldades nessa parte do caminho "formação java" mas estou tentando ir na base do "bola pra frente" pra seguir com o curso e depois procuro outro lugar pra aprender essa parte da matéria (porque eu entendo que o curso precisa ser atualizado e tudo mais, porém to correndo contra o tempo) Então tentei um código para funcionar o tempo dos cookies, porém não está dando certo... alguém poderia me ajudar por favor?

1ºedit: Ahhh, e porque no código do professor o String usuario = "<deslogado>"; ele volta aparecer se ele já foi informado no getUsuario ??

2ª edit: Aliás, eu estava olhando o código no lugar errado. Ele ta funcionando (eu acho). Caso ele esteja, podem me ajudar qual o erro dele? Porque ele está claramente diferente ao do professor!! Muito obrigado pela ajuda!

package br.com.alura.gerenciador.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
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 javax.servlet.http.HttpServletResponse;

@WebFilter(urlPatterns = "/*")
public class FiltroDeAuditoria implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        Cookie[] cookies = req.getCookies();

        String uri = req.getRequestURI();

        String usuario = getUsuario(req);

        for (Cookie cookie : cookies) {
            cookie.getName().equals("usuario.logado");
            cookie.setMaxAge(10*60);    
            res.addCookie(cookie);
        }
        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;
    }
}
2 respostas

Opa, para ser sincero, eu não entendi muito bem a dúvida. O código que define o tempo do cookie parece correto. Você pode verificar abrindo o console do seu navegador e procurando pelo cookie que você definiu. O que parece estar errado é o uso do equals ali.. .Provavelmente você queria fazer um if, pelo menos pareceu.

solução!

Consegui aqui. Eu entrei como administrador e deu tudo certo. Eu achei, por ser usuario unico, eu seria automaticamente administrador. Porém voce tem que seguir o passo e iniciar o prompt como administrador mesmo pra dar certo

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software