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

Erro de conversão Object To Usuario

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

        HttpServletRequest req = (HttpServletRequest) requisicao; // Cast
        HttpServletResponse resp = (HttpServletResponse) response; // Cast
        String uri = req.getRequestURI();// Pega a URI da requisição feita pelo usuário

        String usuario = getUsuario(req);

        System.out.println("Requisição usada : " + uri + " | Pelo usuário : " + usuario); 
        chain.doFilter(requisicao, response);//continua o fluxo, partindo para páginasWEB ou servlets
    }

    private String getUsuario(HttpServletRequest req) {

        Usuario usuario = (Usuario) req.getSession().getAttribute("usuario.logado"); // pegando o usario da requisição e seus atributos

        if(usuario == null)
            return "<DESLOGADO>";

        return usuario.getEmail();
    }

apresenta esse erro :

HTTP Status 500 - java.lang.String cannot be cast to br.com.alura.gerenciador.Usuario

type Exception report

message java.lang.String cannot be cast to br.com.alura.gerenciador.Usuario

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.ClassCastException: java.lang.String cannot be cast to br.com.alura.gerenciador.Usuario br.com.alura.gerenciador.web.FiltroDeAuditoria.getUsuario(FiltroDeAuditoria.java:43) br.com.alura.gerenciador.web.FiltroDeAuditoria.doFilter(FiltroDeAuditoria.java:35) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.70 logs.

Apache Tomcat/7.0.70

2 respostas
solução!

Oi Paulo,

Quando você efetuou o login, você colocou o Usuario na sessão ou apenas uma informação dele?

Esta linha está dando erro porque aparentemente está pendurada uma String ao invés do Usuario com a chave usuario.logado.

Usuario usuario = (Usuario) req.getSession().getAttribute("usuario.logado");

Dá uma conferida como está na sua classe Login.

Abraço!

Era isso mesmo Joviane, obrigado. Eu passei o Email através do usuario.getEmail();, e não o Objeto Usuario.

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


        PrintWriter writer = resp.getWriter();

        String email = req.getParameter("email");
        String senha = req.getParameter("password");

        Usuario usuario = new UsuarioDAO().buscaPorEmailESenha(email, senha);

        if(usuario != null){

            HttpSession session = req.getSession();
            session.setAttribute("usuario.logado", usuario.getEmail());
            writer.println("<html><body>Usuário logado : "+ usuario.getEmail() +"</body></html>");
        }else{
            writer.println("<html><body>usuário inválido  !! </body></html>");
        }    
    }