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

Erro ERR_TOO_MANY_REDIRECTS

Olá pessoal realizei a implementação da aula 4 autorizando o acesso, porém ao passar as classes que não são protegidas para liberar o acesso é gerado no navegador o erro ERR_TOO_MANY_REDIRECTS revisei o código e não consegui encontrar o problema! Abaixo os códigos:

Usuario

package br.com.gerenciador.modelo;

public class Usuario {

    private String login;
    private String senha;


    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }


    public boolean ehIgual(String login, String senha) {
        if(!this.login.equals(login)) {
            return false;
        }

        if(!this.senha.equals(senha)) {
            return false;
        }

        return true;
    }






}

Login

package br.com.gerenciador.acao;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.gerenciador.modelo.Banco;
import br.com.gerenciador.modelo.Usuario;

public class Login implements Acao {

    @Override
    public String executa(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String login = request.getParameter("login");
        String senha = request.getParameter("senha");

        System.out.println("Logando " + login);

        Banco banco = new Banco();
        Usuario usuario = banco.existeUsuario(login,senha);

        if(usuario != null) {
            System.out.println("Usuario existe");
            HttpSession sessao = request.getSession();
            sessao.setAttribute("usuarioLogado", usuario);
            return "redirect:entrada?acao=ListaEmpresas";
        } else {
            return "redirect:entrada?acao=LoginForm";
        }

    }

}

UnicaEntradaServlet

package br.com.gerenciador.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.gerenciador.acao.Acao;
import br.com.gerenciador.acao.AlteraEmpresa;
import br.com.gerenciador.acao.ListaEmpresas;
import br.com.gerenciador.acao.MostraEmpresa;
import br.com.gerenciador.acao.NovaEmpresa;
import br.com.gerenciador.acao.NovaEmpresaForm;
import br.com.gerenciador.acao.RemoveEmpresa;
import br.com.gerenciador.modelo.Banco;
import br.com.gerenciador.modelo.Empresa;

@WebServlet("/entrada")
public class UnicaEntradaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String paramAcao = request.getParameter("acao");

        HttpSession sessao = request.getSession();

        boolean usuarioNaoEstaLogado= (sessao.getAttribute("usuarioLogado") == null);
        boolean ehUmaAcaoProtegida = !(paramAcao.equals("Login") || paramAcao.equals("LoginFom"));

        if (ehUmaAcaoProtegida && usuarioNaoEstaLogado) {
            response.sendRedirect("entrada?acao=LoginForm");
            return; 
        }



        String nomeDaClasse = "br.com.gerenciador.acao." + paramAcao;

        String nome;

        try {
            Class classe = Class.forName(nomeDaClasse);// carrega a classe com o nome
            Acao acao = (Acao) classe.newInstance();
            nome = acao.executa(request, response);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            throw new ServletException(e);
        }

        // separa a string em 2 para usar no if e passar como parametro.
        String[] tipoEEndereco = nome.split(":");

        if (tipoEEndereco[0].equals("forward")) {
            // chama o dispachador para direcionar o atributo para o JSP
            RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/view/" + tipoEEndereco[1]);

            // leva a o atributo junto com a requisição e a resposta
            rd.forward(request, response);

        } else {
            response.sendRedirect(tipoEEndereco[1]); // redireciona para servlet, pagina , etc. passando o parametro.

        }



    }
}
3 respostas
solução!

Olá, Marcos. Acredito que o erro está na linha abaixo. Faltou um 'r' no paramAcao.equals("LoginForm")

boolean ehUmaAcaoProtegida = !(paramAcao.equals("Login") || paramAcao.equals("LoginFom"));

Obrigado amigo, funcionou corretamente isso tinha passado batido!

Que bom! Fico feliz em poder ter ajudado! :)