2
respostas

Erro ao utlizar filtros globais: ERR_TOO_MANY_REDIRECTS

Boa noite!

Ao utilizar o registro de filtros globais a aplicação para de funcionar devido ao loop de redirecionamentos gerando o seguinte erro: "ERR_TOO_MANY_REDIRECTS".

Tentei utilizar uma solução encontrada no forum, implementando a interface "IOverrideFilter", porem não funcionou.

Notei que outras pessoas tiveram o mesmo problema, e é possível ver que o vídeo foi editado quando o instrutor comenta que pode dar erro, e simplesmente não nos mostra o erro e(ou) como corrigi-lo.

Gostaria que alguém me ajudasse a solucionar aqui, porem acredito que o ideal seria corrigir no próprio curso.

Grato.

2 respostas

Eu consegui contornar o problema fazendo o seguinte ajuste na classe do filtro:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace CaelumEstoque.Filtros
{
    public class AutorizacaoFilterAttribute : ActionFilterAttribute
    {
        //Antes de executar o controller
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            object usuarioLogado = filterContext.HttpContext.Session["usuarioLogado"];
            if (usuarioLogado == null)
            {
                if (filterContext.Controller is CaelumEstoque.Controllers.LoginController)
                {
                    //Nao faz nada
                } else { 
                    filterContext.Result = new RedirectToRouteResult(
                                new RouteValueDictionary(
                                   new { action = "Index", controller = "Login" }));
                    }
            }
        }
    }
}

Oi Daniel, tranquilo?

Funciona, mas se há mais controllers para negar o filtro (como a "Home") é necessário inclui-las no "if" também, dificultando a manutenção e repetindo código.

Seria interessante uma solução usando anotações, como a que implementa a interface "IOverrideFilter", porem não consegui aplicar no projeto.

Grato.